我在学习cpp和在我上一次的任务中,我重写了std :: string类。 所以这里是我的代码的轮廓: string类:C++:错误:类型'String *'和'const char [7]'的无效操作数到二进制'operator +'
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;
};
哦,我必须说,我想声明的方法为字符串*运算符+(为const char *海峡)和常量字符串&运营商+( 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+’
我抬头对谷歌和我在书里我从没有成功学习。 任何一个有建议吗? (我很确定我在做一些愚蠢的事情,你将不得不原谅我,我原来是一个PHP程序员)可以有人指出我错过了什么?
好主意,但现在当我这样做: String testing = new String(“Hello,”); 我收到以下(相同)错误: foobar.cc:11:错误:从'String *'转换为非标量类型'String' – 2009-08-22 22:55:26
注意我在示例中删除了该行的关键字“new”。使用“新”分配堆上的东西,并返回一个指针;没有“新建”,它是堆栈中的对象的构造函数调用。 – 2009-08-22 22:59:50
哦,对,谢谢! – 2009-08-22 23:05:40