#c
#c
Вопрос:
В файле.hpp
class top
{
public:
class Base
{
int x;
int y;
public:
Base(int p, int q) : x(p), y(q) {}
};
class Derived : public Base
{
public:
Derived():Base ( NULL, NULL ); // error
};
};
У меня есть базовый класс и производный класс. При вызове конструктора производного класса я хочу передать базовый класс и инициализировать его некоторыми параметрами. Что я здесь делаю не так?
Комментарии:
1.
Derived():Base ( 0, 0 ) {}
Как написано, вDerived
конструкторе отсутствует тело; иNULL
для указателей.
Ответ №1:
// error
Что я здесь делаю не так?
Когда вы получаете сообщение об ошибке, первым шагом является чтение сообщения об ошибке.
Вы делаете это неправильно:
- Вы инициализируете целые числа с
NULL
помощью .NULL
только для указателей. Не все константы нулевого указателя являются целочисленными литералами, поэтому это может быть или не быть неправильно сформированным во всех реализациях языка. Кроме того,NULL
его вообще не следует использовать, поскольку все его варианты использования были замененыnullptr
. - Вы забыли предоставить тело для конструктора. Тело функции должно быть блочным оператором. Это может быть не нулевой оператор, т.Е. Он может быть не справедливым
;
. - Вы забыли точку с запятой после определения вашего класса.