Pra*_*rav 2 c++ templates scope friend
我的问题与这个问题有关.
#include<iostream>
template< typename T >
class T1 {
public:
T i;
void display()
{
std::cout<<i<<"\n"<<j<<"\n"<<k;
}
protected:
T j;
private:
T k;
friend void Test( T1 &obj);
};
template<typename T>
void Test(T1<T> &obj)
{
T a=T();
obj.i=a;
obj.j=a;
obj.k=a;
}
int main()
{
T1<int>a;
Test(a);
a.display();
}
Run Code Online (Sandbox Code Playgroud)
为什么上面的代码没有编译?
friend void Test( T1 &obj);
声明一个non template
函数.
将其声明为template
.
试试这个 :
....
private:
T k;
template<typename U>
friend void Test( T1<U> &obj);
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
252 次 |
最近记录: |