В приведенном ниже примере
class Car
{
private:
int sides;
public:
Car()
{
cout<<"\ndefault called constructor";
}
Car(int nsides)
{
cout<<"\ncalled constructor";
sides=nsides;
}
};
class Auto
{
private:
Car ch;
public:
Auto(int a) : Car(a)
{
//Car test(5);
}
};
int main()
{
Auto at(5);
return 0;
}
После перехода по ссылкам ниже:-
создавать объекты в объекте, передавая переменные через конструктор
http://www.cplusplus.com/forum/beginner/9746/
Я попытался написать то же самое и выполнить его. К сожалению, я получаю следующую ошибку компилятора: -
check.cpp: In constructor ‘Auto::Auto(int)’:
check.cpp:44: error: type ‘Car’ is not a direct base of ‘Auto’
Если решение, упомянутое в приведенных ссылках, верное, то что не так в моем коде? Мой следующий вопрос: почему только параметризованный конструктор() вызывает компилятор, если попытаться его инициализировать без использования списка инициализации.
Это вызовет ошибку компилятора: -
class Auto
{
private:
Car ch(5);
public:
Auto(int a)
{
}
};
Но это не так :-
class Auto
{
private:
Car ch;
public:
Auto(int a)
{
}
};
Пожалуйста, помогите мне понять это поведение.
Заранее спасибо.