我使用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