У меня есть два класса: Generator
и Motor
. Вот урезанная версия Generator
:
class Generator {
private:
Motor motor; // this will be initialized later
// However, this line causes the constructor to run.
public:
Generator(string);
}
Generator::Generator(string filename) {
motor = Motor(filename); // initialisation here
}
, а вот определение класса Motor:
class Motor {
public:
Motor();
Motor(string filename);
}
Motor::Motor() {
cout << "invalid empty constructor called" << endl;
}
Motor::Motor(string filename) {
cout << "valid constructor called" << endl;
}
А вот моя main()
функция:
int main(int argc, char* argv[]) {
Generator generator = Generator(argv[1]);
....
....
}
Вывод:
недопустимый пустой конструктор с именем
допустимый конструктор с именем
Как определить класс Generator
, чтобы иметьэкземпляр Motor
без вызова пустого конструктора Motor
, до тех пор, пока позже?
Мне пришлось включить пустой конструктор, потому что g++
отказывается компилироваться без него.