我正嘗試使用std :: vector < char>創建自定義字符串類。operator =在我的自定義字符串類中無法正常工作
請看看下面我的代碼。
#include <iostream>
#include <vector>
class mString {
public:
mString();
explicit mString(const char *str);
mString(const mString &str);
mString operator=(const char *str);
private:
typedef std::vector<char> vecChar;
vecChar _vc;
};
inline mString::mString(){}
inline mString::mString(const char *str) {
const vecChar::size_type size = strlen(str);
_vc = vecChar(str, str + size);
}
inline mString::mString(const mString &str) {
_vc = str._vc;
}
inline mString mString::operator=(const char *str) {
const vecChar::size_type size = strlen(str);
_vc = vecChar(str, str + size);
return *this;
}
int main(int argc, const char * argv[]) {
/* This works */
mString a;
a = "Hello World";
/* Error : No viable conversion from 'const char[12]' to mString */
mString b = "Hello World";
return 0;
}
我不明白爲什麼 'mString B = 「Hello World」 的;'不工作,而'mString a; a =「Hello World」;'作品。 爲了使其工作,我需要做些什麼?
預先感謝您!
_「...不起作用......_」不是問題。你需要告訴我們它是如何工作的。 –
不是[從初始化構造函數和賦值運算符創建的對象之間有什麼不同](https://stackoverflow.com/questions/35167580/what-different-between-object-created-from-initialization-constructor-and-分配)。問題是一樣的,但答案是不同的。行'mString b =「...」'不是賦值運算符。它是一個初始化構造函數。 –