|
在tmeplate <class T>中声明一个友元:
friend ostream & operator<<(ostream&,Array<T>&);
这一句在g++中编译通不过:以下是出错信息:
4.cpp:38: 警告: 友元声明‘std:stream& operator<<(std:stream&, Array<T>&)’声明了一个非模板函数
4.cpp:38: 警告: (如果这不是您原来的想法,请确定此函数模板已经声明过,并在这里的函数名后面添加 <>) -Wno-non-template-friend 禁用此警告
/tmp/ccnDvlHH.o: In function `main':
4.cpp.text+0x29e): undefined reference to `operator<<(std::basic_ostream<char, std::char_traits<char> >&, Array<int>&)'
collect2: ld 返回 1
然后在google了一下,在国外的网站上看了看,没看懂,有人说把那句改为
friend ostream & operator<< <>(ostream&,Array<T>&);
但还是出错了,以下是出错信息:
4.cpp: In instantiation of ‘Array<int>’:
4.cpp:82: instantiated from here
4.cpp:38: 错误: 模板标识符‘operator<< <>’(属于‘std::basic_ostream<char, std::char_traits<char> >& operator<<(std::basic_ostream<char, std::char_traits<char> >&, Array<int>&)’)不匹配任何模板声明
望知道的朋友指点.谢过! |
|