ฉันได้เริ่มลองใช้มาตรฐาน C ++ 11 แล้วและฉันพบคำถามนี้ซึ่งอธิบายถึงวิธีการเรียก ctor ของคุณจาก ctor อื่นในคลาสเดียวกันเพื่อหลีกเลี่ยงการมีวิธีการเริ่มต้นหรือสิ่งที่คล้ายกัน ตอนนี้ฉันกำลังลองสิ่งเดียวกันกับรหัสที่มีลักษณะดังนี้:
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ฉันได้ลองย้ายส่วน Tokenizer () ก่อนและสุดท้ายในรายการ แต่ไม่ได้ช่วย
อะไรคือสาเหตุที่อยู่เบื้องหลังสิ่งนี้และฉันควรแก้ไขอย่างไร ฉันได้ลองขยับlines(lines)ร่างกายด้วยthis->lines = lines;แทนแล้วก็ใช้ได้ดี แต่ฉันอยากจะใช้รายการตัวเริ่มต้นจริงๆ