【发布时间】:2012-08-24 18:41:08
【问题描述】:
我已经开始尝试 C++11 标准,我发现 this 问题描述了如何从同一类中的另一个 ctor 调用您的 ctor 以避免使用 init 方法等。现在我正在用类似这样的代码尝试同样的事情:
hpp:
class Tokenizer
{
public:
Tokenizer();
Tokenizer(std::stringstream *lines);
virtual ~Tokenizer() {};
private:
std::stringstream *lines;
};
cpp:
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() 部分移到列表中的第一个和最后一个,但这没有帮助。
这背后的原因是什么,我应该如何解决?我尝试用this->lines = lines; 将lines(lines) 移动到身体上,效果很好。但我真的很想能够使用初始化列表。
【问题讨论】:
标签: c++ gcc c++11 ctor-initializer