2013-05-29 60 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 *成员函数。这是一个普通的免费功能,它被授予访问非公众成员的权利,它是 –