最佳答案
我已经开始尝试 C + + 11标准,我发现了 这个问题,它描述了如何从同一个类中的另一个 ctor 调用你的 ctor,以避免使用 init 方法或类似的方法。现在我尝试用这样的代码做同样的事情:
返回文章页面
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)
{
}
但这给了我一个错误:
在构造函数‘ config: : Tokenizer: : Tokenizer (std: : stringstream *)’中:
/path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
I've tried moving the Tokenizer() part first and last in the list but that didn't help.
这背后的原因是什么,我应该如何修复它?我试过用 this->lines = lines;
将 lines(lines)
移动到身体上,它工作得很好。但我真的希望能够使用初始化列表。