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";' while 'mString a;は動作しません。 a = "Hello World"; '働く 動作させるには何をする必要がありますか?
ありがとうございます!
_ "...動作しません..._"は質問ではありません。どのように動作しないか教えてください。 –
[初期化コンストラクタと代入演算子から作成されたオブジェクトの違いは何ですか?](https://stackoverflow.com/questions/35167580/what-different-between-object-created-from-initialization-constructor-and-割り当てます)。質問は同じですが、答えは異なります。 'mString b =" ... "'という行は代入演算子ではありません。初期化コンストラクタです。 –