无法从2D数组到另一个2D数组执行strcpy

时间:2012-07-27 20:01:22

标签: c++ operators strcpy

两者都在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];

1 个答案:

答案 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];
}