首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

重载operator+ 遇到有关问题

2012-05-29 
重载operator+ 遇到问题这是我的 +的重载。C/C++ codetemplateclass T, int row, int colconst CMatrixT

重载operator+ 遇到问题
这是我的 +的重载。

C/C++ code
template<class T, int row, int col>const CMatrix<T, row, col> CMatrix<T, row, col>::operator +(const CMatrix& tmp){    CMatrix<T, row, col> ans(0);    ......    ......(过程略,很简单)    ......        return ans;}


在最后返回了这个临时的对象。
但是我这个类的析构函数是这样的。data是其成员变量。

C/C++ code
CMatrix<T, row, col>::~CMatrix(){delete data;}


也就是说我在返回之前就已经销毁了,所以是不可能返回成功的。

以前写简单的int 的加号重载什么的,因为没考虑过写析构函数,就一直没在意,今天突然发现了这个问题。

所以想请教一下,怎样可以实现。谢谢。

[解决办法]
那你看看
C++类中的4个特殊函数 - 缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数
这篇文章
[解决办法]
楼主 matrix 类的问题在于,行和列已经在 template 中指定了,还自己手工分配内存;
比较好的写法是直接用 stack, i.e.
C/C++ code
template<typename T, std::size_t R, std::size_t C>struct matrix{    T data_[R][C];    //...}; 

热点排行