2
#include< iostream>
using namespace std;
template< class t>
class X
{
private:
t x;
public:
template< class u>
friend u y::getx(X< u>);
void setx(t s)
{x=s;}
};
class y
{
public:
template< class t>
t getx(X< t> d)
{return d.x;}
};
int main()
{
X< int> x1;
x1.setx(7);
y y1;
cout<< y1.getx(x1);
return 0;
}
上述程序的朋友,在編譯時,顯示出一個錯誤,y
既不是函數,也不是一個成員函數,因此它不能被聲明的朋友。如何將getx
作爲朋友加入X
?聲明類的成員函數作爲模板類
但我已經定義的類在y之前全班X ....是向前聲明必需....它有什麼作用 – avinash 2011-06-06 15:04:16
@avinash - 爲了能夠使功能的朋友,該功能必須可見,這意味着類y必須可見,因爲函數是成員。當聲明該成員函數時,類X必須在那裏可見,因爲它是一個參數。前向聲明表示X是一個類模板,在這一點上就足夠了。 – 2011-06-06 15:12:30