C++模板类与友元函数的问题,请高手赐教
#include<iostream.h>
template <class T>
class X
{
private:
T n;
public:
X(T i) { n=i; }
friend void f(X <T> &s)
{ s.n=2*s.n; }
void disp()
{ cout<<"n="<<n<<endl; }
};
int main()
{
X<int> s1(2);
X<double> s2(1.23);
s1.disp();
s2.disp();
f(s1);
f(s2);
return 0;
}
//程序运行结果:
//n=2 ?????为什么n不是4
//n=1.23 ?????为什么n不是2.46
[解决办法]
int main()
{
X<int> s1(2);
X<double> s2(1.23);
//初始化完后,s1.n = 2, s2.n = 1.23
s1.disp(); //打印s1.n,当然是n = 2
s2.disp(); //打印s2.n, 当然是n = 1.23
f(s1);
f(s2);
return 0;
}
有什么不对
[解决办法]
#include<iostream.h>template <class T>class X{private: T n;public: X(T i) { n = i; } friend void f(X <T> &s) { s.n = 2 * s.n; } void disp() { cout << "n=" << n << endl; }};int main(){ X<int> s1(2); X<double> s2(1.23); f(s1); f(s2); s1.disp(); s2.disp(); return 0;}