2013-05-29 53 views
1

使用「模板 類兩個」嘿,所以我試圖編譯: 錯誤:沒有模板參數

//ASSIGNMENT 
#include <iostream> 
#include <string> 

using namespace std; 

template <class T> 
class Two { 

    private: T x,y; 
    public: 

     Two (T a, T b); 
     friend void Show (Two p); 
     ~Two(); 

}; 
//ASSIGNMENT 


template <class T> 
Two::Two (T a, T b){ 
    x = a; 
    y = b; 
} 

friend void Two::Show(Two p){ 
    cout << p.x << " and " << p.y << endl; 
} 

int main() { 
    Two<int> class2(2,3); 
    Show(class2); 
} 

的任務是定義類的成員(在//委派標籤)。我不知道爲什麼它不會編譯...謝謝!

+4

'friend'函數不是成員函數。如果他們是成員函數,他們不需要成爲「朋友」功能,因爲他們已經可以訪問該類的私人內容。 – chris

+0

你的析構函數沒有被定義爲btw –

回答

3

變化

template <class T> 
Two::Two (T a, T b) 

template <class T> 
Two<T>::Two (T a, T b) 

,使類似的變化無論它的需要。

+0

所以我確實發生了[this](http://ideone.com/NocjGY)。所以有**沒有**的方式來定義一個類之外的朋友功能? – MK3GTX

+0

@ MK3GTX - 正如其他人告訴你的,這個'friend'函數是**不是**成員函數。不要將其定義爲一個。 –

+0

@ MK3GTX:正如Chris在評論中所建議的,朋友函數是* not *成員函數。這是一個普通的免費功能,它被授予訪問非公衆成員的權利,它是 –