我想用一個複製構造函數做一個非常簡單的字符串類,我遇到的問題是,我試圖發送一個數據類型/對象作爲一個常量,但每當我嘗試將它分配給相同的非常量數據,編譯器抱怨。Const數據類型不能被分配到一個非const數據類型
我不明白爲什麼會編譯器抱怨,我只是試圖複製數據,我不修改它。
部首
class MyString{
private:
char* thestring;
MyString* ms;
public:
MyString();
MyString(const char* str);
MyString(const MyString& str);
~MyString();
MyString& operator=(const char* str);
};
CPP
MyString::MyString(){
thestring = '\0';
}
MyString::MyString(const MyString& str){
ms = str;
}
MyString& MyString::operator=(const char* str){
MyString* temp = new MyString();
temp->thestring = str;
return temp;
}
MyString::MyString(const char* str){
}
MyString::~MyString(){
}
這裏的誤差修改:
從 「常量MyString的」 到沒有合適的轉換函數 「的MyString *」 存在9
a valu型的e「的常量字符*」不能被分配給類型 「字符*」 14
類型「的myString &」的基準(未常量限定)的實體不能 用類型的值初始化「 MyString的*」 15
'的MyString ::運算符=':必須返回一個值16
+1。小記:對於作業分配,我認爲我們應該檢查自我分配'if(this!=&str)' – lolando
@lolando謝謝,現在已經修復。 – dasblinkenlight
爲什麼運營商需要一個MyString參數,當我分配一個帶有引號的值時,它將接收一個常量字符。 –