我已经开始尝试在C ++ 11标准,我发现这个问题,其中介绍了如何从同一类构造函数的另一个调用你的构造函数,以避免一个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
我试着移动标记生成器()部分第一个和最后的名单,但没有帮助。
什么是这背后的原因,我应该如何解决? 我已经试过移动所述lines(lines)
与到主体this->lines = lines;
而不是和它工作正常。 但我真的希望能够使用初始化列表。
提前致谢!