【发布时间】:2013-09-19 14:04:02
【问题描述】:
在调用我的类 VecXd 示例 -> VecXd x,y,z;返回的值是正确的,但是当再次使用 VecXd x,y,z 从 main 调用时;我的 operator= 返回的值超出范围,有人知道为什么吗?
template< class V >
class VecXd {
std::size_t dimension;
V* vecArr;
public:
...
VecXd& operator=(const VecXd &rhs)
{
// cout << rhs.vecArr[0] << "-= value at 0 rhs" << endl; value is fine
dimension = rhs.dimension;
cout << dimension << "operator= dimension test!" << endl; ///dimension check
vecArr = new V[dimension];
for(int i = 0; i < rhs.dimension; i++)
{
vecArr[i] = rhs.vecArr[i];
cout << vecArr[i] << " our new value (op=)" << endl;
}
return *this;
}
};
【问题讨论】:
-
模板类是模板
-
您可以编辑您的问题。请不要在 cmets 中修改您的问题,这会使阅读变得更加困难。
-
它没有出现,只是一直说模板不包括类,但现在已修复! :D
-
你应该添加演示问题的代码
-
你的复制赋值操作符这里有内存泄漏。为什么不使用
std::vector?
标签: c++ templates overloading operator-keyword