String
std::stringクラスを模倣する独自のクラスを宣言しようとしています。以下はString
クラスです。
class String {
public:
// Copy constructor.
String(const String &);
// Conversion to std::string.
operator std::string() const;
// Assignment.
String &operator=(const String &);
};
私が持っている制約の1つはこれです:
プライベート(または文書化されていないコンストラクター)が必要になりますが、パブリックコンストラクターは必要ありません。また、この
String
クラスでは、最適化されたメモリ管理を使用できるようになることに注意してください。
強調表示された線に混乱しています。私は次のように実装しようとしました:
class String: public std::string {
private:
String();
String *s;
public:
// Copy constructor.
String(const String &a) {
s = a.s;
};
// Conversion to std::string.
operator std::string() const {
return this;
};
// Assignment.
String& operator=(const String &a) {
if(this != &a) {
s=a.s;
}
return *this;
};
};
しかし、これは間違っているので、私はこのアプローチで問題に直面しています。私は何を間違っているのですか、それを実装するための正しい方法は何ですか?
String
主な問題は、オブジェクトをに変換することstd::string
です。これを行う方法?return this
行は私にエラーを与えます。