读书人

C++模板类与友元函数的有关问题请高

发布时间: 2012-09-09 09:27:54 作者: rapoo

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;
}


有什么不对
[解决办法]

C/C++ code
#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;} 

读书人网 >C++

热点推荐