C ++重写std :: string的赋值(=)运算符

时间:2013-05-28 09:44:33

标签: c++ string

我真的不是要压倒它,因为我知道这是不可能的(除非我自己做)。但我如何以这样的方式做到这一点

strText = "bla bla";
strText.Compile();    //<--- I want this one to be implicitly call.

我知道我可以使用像这样的方法来做到这一点

updateText(const std::string& text)
{
    strText = text;
    Compile();
}

std::string& updateText()
{
    Compile();      //hmm not sure about this. never try
    return strText;
}

但是有没有其他技术如何通过只做

来隐含地实现这一点
strText = newText;   //<--automatically call the `Compile()`

...

在我放弃updateText()

之前,请通知我

谢谢!

1 个答案:

答案 0 :(得分:1)

我能想到的唯一解决方案是定义my::string(在内部存储std::string以提供基本字符串功能)并定义:

my::string(const char*);

为了允许来自C样式字符串和my::string的隐式转换,然后定义:

my::string& operator=(const char*);

实现调用Compile函数。