我在學習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