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 delegationTokenizer () 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.