나는 C ++ 11 표준을 시도하기 시작했고 init 메소드 등을 피하기 위해 동일한 클래스의 다른 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;
. 하지만 이니셜 라이저 목록을 사용하고 싶습니다.