Проблема при инициализации конструктора из производного класса

#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 .
  • Вы забыли предоставить тело для конструктора. Тело функции должно быть блочным оператором. Это может быть не нулевой оператор, т.Е. Он может быть не справедливым ; .
  • Вы забыли точку с запятой после определения вашего класса.