我有一个赋值,我必须编写一个简单的类。该类必须包含一个字符串数组,并且包含'+'运算符的重载,该运算符将两个数组的元素组合为一个新数组并将其返回。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