我已经开始尝试 C++11 标准,我发现这个问题描述了如何从同一个类中的另一个 ctor 调用你的 ctor 以避免使用 init 方法等。现在我正在尝试使用如下代码做同样的事情:
惠普:
class Tokenizer
{
public:
Tokenizer();
Tokenizer(std::stringstream *lines);
virtual ~Tokenizer() {};
private:
std::stringstream *lines;
};
cp:
Tokenizer::Tokenizer()
: expected('=')
{
}
Tokenizer::Tokenizer(std::stringstream *lines)
: Tokenizer(),
lines(lines)
{
}
但这给了我错误:
In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’:
/path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
我尝试将 Tokenizer() 部分移到列表中的第一个和最后一个,但这没有帮助。
这背后的原因是什么,我应该如何解决它?我已经尝试将它lines(lines)
移到身体上,this->lines = lines;
并且效果很好。但我真的很想能够使用初始化列表。