|
在类模板中声明一友元函数模板,结果编译无法通过。 想破头也不明白哪里错了。
哪位C++高手帮忙一下!
[php]
// file : b3.cc
#include <iostream>
using namespace std;
template<typename T> class A;
template<typename T>
A<T> operator+(A<T> const& rhs1, A<T> const& rhs2)
{
A<T> ret(rhs1.data+rhs2.data);
return ret;
}
template<typename T>
class A{
friend A<T> operator+ <T>(A<T> const&, A<T> const&);
private:
T data;
public:
A(T const& x):data(x){}
void show() const { cout<<data<<endl; }
};
int main()
{
A<int> a(9);
A<int> b(8);
A<int> c=a+b;
c.show();
}
[/php]
$ gcc -v
使用内建 specs。
目标:i686-pc-linux-gnu
配置为:/var/tmp/portage/gcc-4.1.1-r1/work/gcc-4.1.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.1.1 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.1.1/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4 --host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libmudflap --disable-libssp --disable-libgcj --enable-languages=c,c++,fortran --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
线程模型:posix
gcc 版本 4.1.1 (Gentoo 4.1.1-r1)
$ g++ b3.cc
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator_base_types.h: In instantiation of ‘std::iterator_traits<int>’:
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator.h:98: instantiated from ‘std::reverse_iterator<int>’
b3.cc:15: instantiated from ‘A<int>’
b3.cc:26: instantiated from here
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator_base_types.h:129: 错误:‘int’ 不是类、 结构或联合类型
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator_base_types.h:130: 错误:‘int’ 不是类、 结构或联合类型
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator_base_types.h:131: 错误:‘int’ 不是类、 结构或联合类型
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator_base_types.h:132: 错误:‘int’ 不是类、 结构或联合类型
/usr/lib/gcc/i686-pc-linux-gnu/4.1.1/include/g++-v4/bits/stl_iterator_base_types.h:133: 错误:‘int’ 不是类、 结构或联合类型 |
|