gpt4 book ai didi

c++ - 无法执行从二维数组到另一个二维数组的 strcpy

转载 作者:行者123 更新时间:2023-11-27 23:22:42 24 4
gpt4 key购买 nike

两者都在同一个类的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];

最佳答案

有两个问题。首先,您必须使 getPhrase 成为常量方法。第二个问题是 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];
}

关于c++ - 无法执行从二维数组到另一个二维数组的 strcpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11694899/

24 4 0
文章推荐: c++ - 运行时的策略模式?
文章推荐: jquery - 视频结束时隐藏包装
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com