Saya sudah mulai mencoba standar C ++ 11 dan saya menemukan pertanyaan ini yang menjelaskan bagaimana memanggil ctor Anda dari ctor lain di kelas yang sama untuk menghindari metode init atau sejenisnya. Sekarang saya mencoba hal yang sama dengan kode yang terlihat seperti ini:
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)
{
}
Tetapi ini memberi saya kesalahan:
In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’:
/path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegation
Saya sudah mencoba memindahkan bagian Tokenizer () pertama dan terakhir dalam daftar tetapi itu tidak membantu.
Apa alasan di balik ini dan bagaimana cara memperbaikinya? Saya sudah mencoba memindahkan lines(lines)
ke tubuh dengan this->lines = lines;
sebagai gantinya dan itu berfungsi dengan baik. Tetapi saya benar-benar ingin bisa menggunakan daftar penginisialisasi.
sumber