2010-04-05 122 views
0

你能告訴我我的類構造函數有什麼問題嗎? 代碼:構造函數返回值

CVector::CVector (int size_) 
{ 
if (size_ > 0) 
{ 
    this->size = size_; 
    this->data = new double[size]; 
    for (int i = 0; i < size; i++) 
    { 
    (*this)(i) = i; 
    } 
} 
cout << "constructor end" << endl; 
return; 
} 

用例:

tvector = CVector(6);

「構造函數結束」輸出後出現訪問衝突。

更新: 構造函數調用不正確。使用

CVector tvector(6); 工作。

+3

任何不使用'std :: vector'的理由? – GManNickG 2010-04-05 19:03:27

+1

請發佈'CVector'的完整聲明,它有助於解決成員'size','data'和任何其他神祕方法和未在片段中解釋的成員。 – 2010-04-05 19:05:29

+0

請閱讀_initialization lists_,這是你應該用來初始化你的數據成員。 – sbi 2010-04-05 19:07:56

回答

6

我認爲你想要:this->data[i] = i;

0

我認爲通過

(*this)(i) = i; 

你實際上意味着

this->data[i] = i; 

,對嗎?

+0

是的,basicallt是一樣的。我已經實現了operator()來訪問數據[]。 – 2010-04-05 19:06:28

+0

@Ivan:您發佈的代碼中沒有運算符()。也許你沒有發佈你的整個班級? – Bill 2010-04-05 19:12:05

1

您不需要在構造函數正文結尾處有return語句。

構造函數確實返回一個值,但這是另一次更詳細的解釋。

2

我打算假設你沒有添加拷貝構造函數,而析構函數釋放了你碰巧用一些其他代碼跺腳的內存。

+0

+1。初學者最常犯的錯誤之一。 – 2010-04-05 19:20:57