C ++ 11 standardını denemeye başladım ve bir init yöntemine veya benzerine sahip olmaktan kaçınmak için ctor'unuzu aynı sınıftaki başka bir ctor'dan nasıl çağıracağınızı açıklayan bu soruyu buldum . Şimdi aynı şeyi şuna benzeyen kodla deniyorum:
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)
{
}
Ama bu bana hatayı veriyor:
In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’:
/path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
Tokenizer () kısmını listede ilk ve son olarak taşımayı denedim ama bu yardımcı olmadı.
Bunun arkasındaki sebep nedir ve bunu nasıl düzeltmeliyim? Onun yerine lines(lines)
vücuda taşımayı denedim this->lines = lines;
ve iyi çalışıyor. Ama başlatıcı listesini gerçekten kullanabilmeyi çok isterim.