gpt4 book ai didi

C++ : error: invalid operands of types ‘String*’ and ‘const char [7]’ to binary ‘operator+’

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:04 26 4
gpt4 key购买 nike

我正在学习 cpp,在我的最后一个作业中,我正在重写 std::string 类。所以这是我的代码大纲:字符串类:

   class String {
public:
String(const char* sInput) {
string = const_cast<char*> (sInput);
}

const String operator+(const char* str) {
//snip
print();
}

void print() {
cout<<string;
}

int search(char* str) {

}

private:
char* string;
int len;
};

哦,我不得不说我试图将方法声明为 String* operator+(const char* str) 和 const String& operator+(const char* str) 而没有改变。这是我运行它的方式:

int main(int argc, char* argv[]) {
String* testing = new String("Hello, "); //works
testing->print();//works
/*String* a = */testing+"World!";//Error here.
return 0;
}

完整的错误是这样的:

foobar.cc:13: error: invalid operands of types ‘String*’ and ‘const char [7]’ to binary ‘operator+’

我在 Google 和我正在学习的书中查找,但没有成功。有人有建议吗? (我很确定我在做一些愚蠢的事情,你必须原谅我,我最初是一名 PHP 程序员)任何人都可以指出我错过了什么吗?

最佳答案

您可能不想使用指向您的 String 类的指针。试试这个代码:

int main(int argc, char* argv[]) {
String testing = String("Hello, "); //works
testing.print();//works
String a = testing+"World!";
return 0;
}

为 C++ 类型定义新的运算符时,您通常会直接使用实际类型,而不是指向您的类型的指针。像上面那样分配的 C++ 对象(作为 String testing)分配在堆栈上(一直存在到“作用域”或函数结束)而不是堆(一直持续到程序结束)。

如果你真的想使用指向你的类型的指针,你可以像这样修改最后一行:

String *a = new String(*testing + "World!");

但是,按照 std::string 的示例,这不是您通常希望使用此类字符串类的方式。

关于C++ : error: invalid operands of types ‘String*’ and ‘const char [7]’ to binary ‘operator+’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1317238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com