c++ 输出符的重载??
#include <iostream>
using namespace std;
//template<class T> ostream& operator<< ( ostream& os, const Array1D<T>& v);
template<class T>
class Array1D
{
friend ostream& operator<< ( ostream& os, const Array1D<T>& v );
public:
Array1D( int size = 0 );
T& operator[] ( int i ) const;
private:
int size;
T *element;
};
template<T> ostream& operator<< ( ostream& os, const Array1D<T>& v )
{
for(int i=0; i<size; ++i)
os << element[i] << ' ';
return os;
}
其他的函数都正确,加上重载的函数后就有错误,
编译器报的错误为:(我用的是dev c++ )
[Linker error] undefined reference to `operator<<(std::ostream&, Array1D<int> const&)'
using namespace std;
//template<class T> ostream& operator<< ( ostream& os, const Array1D<T>& v);
template<class T>
class Array1D
{
friend ostream& operator<< ( ostream& os, const Array1D<T>& v );
public:
Array1D( int size = 0 );
T& operator[] ( int i ) const;
private:
int size;
T *element;
};
template<T> ostream& operator<< ( ostream& os, const Array1D<T>& v )
{
for(int i=0; i<size; ++i)
os << element[i] << ' ';
return os;
}
其他的函数都正确,加上重载的函数后就有错误,
编译器报的错误为:(我用的是dev c++ )
[Linker error] undefined reference to `operator<<(std::ostream&, Array1D<int> const&)'
...全文
相关推荐
运算符重载 <>流插入符 流提取符
运算符重载 <>流插入符 流提取符
cpp代码-C++符号重载
cpp代码-C++符号重载
C++输入输出操作符重载的深入分析
本篇文章是对C++输入输出操作符重载进行了详细的分析介绍,需要的朋友参考下
详解C++ 重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。 C++ 中的函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数。 下面的实例中,同名函数 print() 被
C++教程 重载符讲解
关于重载符的讲解,是primer plus 这本书上的讲解。


