我正在尝试声明我自己的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 &);
};
我的限制之一是:
不需要公共构造函数,尽管您需要一个私有的(或未记录的)。另外,请注意,此类
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
行给了我一个错误。