两者都在operator =同一类
中这是函数的定义。
void segment::operator=(const segment& w) {
strcpy(this->phrase, w.getPhrase()); //this line creates a problem.
错误如下:
segment.cpp: In member function ‘void segment::operator=(const segment&)’:
segment.cpp:186: error: passing ‘const segment’ as ‘this’ argument of ‘const char*
segment::getPhrase()’ discards qualifiers
segment.cpp:186: error: cannot convert ‘char (*)[40]’ to ‘char*’ for argument ‘1’ to ‘char* strcpy(char*, const char*)’
const char* segment::getPhrase(){
return *phrase;
}
以上是函数getPhrase
我不知道为什么我不能为此做一个strcpy。
我正在努力完成任务。
编辑:
这是phrase
char phrase[10][40];
答案 0 :(得分:4)
有两个问题。首先,你必须使getPhrase
成为const方法。第二个问题是strcpy
不适用于额外的间接级别。你可能需要这样的东西:
const char* segment::getPhrase(int index) const {
return phrase[index];
}
void segment::operator=(const segment& w) {
int index;
for (index = 0; index < 10; ++index) {
strcpy(this->phrase[index], w.getPhrase(index));
}
}
您应该将10
替换为常量
class segment {
//other stuff
static const int kNumPhrases = 10;
char phrase[kNumPhrases][40];
}