【发布时间】:2012-07-03 11:49:00
【问题描述】:
我在地图迭代器中有一个错误。问题如下:
class JacobianCol
{
private:
...
JacobianColData::iterator _L_begin;
public:
JacobianColData::iterator L_begin();
...
};
在另一个模块中:
JacobianCol LUSolver::col_subtract(const JacobianColData::iterator &alpha, JacobianCol &X, JacobianCol &Y)
{
JacobianCol result = Y;
//alternate "result" variable
return result;
}
呼叫:
...
J[*it] = col_subtract(friend_element, J[diag_index], J[*it]);
...
当我将col_subtract 的结果分配给J[*it] 时,我得到J[*it].L_begin 指向一个已释放内存(指向前一个J[*it] 的指针)。
【问题讨论】:
-
不能解决您的问题,但以下划线开头后跟大写字母的名称以及以双下划线开头的名称保留用于 C++ 实现。
-
谢谢。我使用下划线来区分私有,不受公共保护。我会在未来的项目中考虑您的建议
-
你是否实现了你的拷贝构造函数(和正确的赋值)?从您的 sn-p 中看不出来,因此是一个简单的问题..
-
如何初始化_L_begin?
-
不,我没有。我把它留给编译器。当我尝试将
operator=添加到JacobianCol时,我在 xutility xutility(3133) 中遇到了以下错误:错误 C2679: binary '=' : no operator found 它采用 'const JacobianCol 类型的右手操作数'(或没有可接受的转换)