カスタム関数ビルドをCustomStringという文字列クラスに記述する必要があるというニーズを満たすために、std::string を拡張しました。
コンストラクターを定義しました:
class CustomString : public std::string {
public:
explicit CustomString(void);
explicit CustomString(const std::string& str);
explicit CustomString(const CustomString& customString);
//assignment operator
CustomString& operator=(const CustomString& customString);
... };
3 番目のコンストラクター (コピー コンストラクター) と代入演算子で、その定義は次のとおりです。
CustomString::CustomString(const CustomString& customString):
std::string(static_cast<std::string>(customString))
{}
CustomString& CustomString::operator=(const CustomString& customString){
this->assign(static_cast<std::string>(customString));
return *this;
}
これは「明示的」であるためです。つまり、別の CustomString オブジェクトに割り当てるには明示的なキャストが必要です。割り当てについて不平を言っています。
CustomString s = CustomString("test");
明示的にキャストが必要な場所が正確にわかりません。
コピーコンストラクターが明示的でない場合、コードは問題なく機能しますが、「適切なキャストを推測する」のではなく、明示的な定義を知り、実装したいと思います。