我有一個賦值,我必須編寫一個簡單的類。該類必須包含一個字符串數組,並且包含'+'運算符的重載,該運算符將兩個數組的元素組合爲一個新數組並將其返回。Const C++函數中的賦值
此外,這個函數必須是'const',這是我遇到問題的地方。當試圖更改類「大小」屬性和它所持有的數組時,我收到錯誤。嘗試返回對象時也會出錯。我明白前兩個錯誤的原因是因爲我已經聲明瞭函數'const',但我的問題是,在const方法內重新分配這些值的正確方法是什麼?
不要扯到我太壞,我剛剛開始學習C++,這些概念對我來說有點新。我試過研究這個主題,但我還沒有找到任何有用的答案。這就是說,我真的需要得到這個功能的工作,所以任何幫助將不勝感激。
這裏是類:
class FirstClass{
private:
string* sList;
unsigned int _size;
public:
FirstClass(const unsigned int initSize = 1);
// copy, assignment, and destructor
FirstClass& operator+(const FirstClass& add)const;
};
FirstClass::FirstClass(const unsigned int initSize):_size(initSize)
{
sList = new string[initSize];
return;
}
FirstClass& FirstClass::operator+(const FirstClass& add)
const{
if(add.sList){
int prevSize = this->_size;
this->_size += add._size; // can't do this
string newList[this->_size];
for(int a=0; a<prevSize; a++){
newList[a] = this->sList[a];
}
for(int b=0; b<add._size; b++){
sList[b+prevSize] = add.sList[b];
}
delete [] sList;
this->sList = newList; // or this
}
return *this; // or this
}
編輯:感謝您的快速響應,並清理我在做什麼。這是我修改的代碼。
FirstClass FirstClass::operator+(const FirstClass& add)
const{
FirstClass ma(this->_size + add._size);
if(add.sList){
for(int a=0; a<this->_size; a++){
ma.sList[a] = this->sList[a];
}
for(int b=0; b<add._size; b++){
ma.sList[b+this->_size] = add.sList[b];
}
}
return ma;
}
提示:如果我這樣做:'int a; int b; int c = a + b;'a'或'b'是否被修改? – Pubby 2013-04-25 16:49:26