我使用operator()作为下标操作是这样的:运算符()为下标(C++)
double CVector::operator() (int i) const
{
if (i >= 0 && i < this->size)
return this->data[i];
else
return 0;
}
double& CVector::operator() (int i)
{
return (this->data[i]);
}
它,当我得到价值的作品,但我得到一个错误,当我尝试写分配错误文本::在0x651cf54a (msvcr100d.dll)
未处理异常CG.exe:0000005:使用
a(i) = 1;
UPD值 访问冲突读取地址 0xccccccc0。
你会得到什么错误?另外:你的行为不一致。您在默认情况下会出现超出范围的值,以便在写入超出范围时读取和分段故障。 – 2010-03-29 22:26:56
如果你正在编写一些数组类,你可能决定自己做所有的内存管理?这意味着你需要定义编译器自动定义的四种方法。如果你忘记了一个,那么你会产生无效的内存位置。请发布构造函数/析构函数和赋值运算符。 – 2010-03-30 07:12:05