Конструктор базового абстрактного класса выглядит так:
Object(std::shared_ptr<b2World>& world, const FPoint& pos, const char* nameText,
float density, float restitution, TypeShape type);
Конструктор дочернего класса выглядит так:
Star(std::shared_ptr<b2World>& world, const FPoint& pos, const char* nameText,
float density, float restitution, Node::TypeShape type);
Вопрос: можно ли написать в дочернем классе что-то подобное:
Star(Object* object);
Компилятор ругается при инициализации объекта дочернего класса объектом абстрактного класса. А не хочется постоянно вводить в дочерние классы параметры базового.
Давайте я попробую угадать что вам надо.
Вы хотите создать объект Start на основе имеющегося объекта Object? Тогда вам надо нормально описать конструктор Start
Start::Start(Object * object) // <- тут очень странно почему по указателю
: Object(*object)
{
}
Для этого вам понадобится соответствующий конструктор в наследнике и конструктор копирования в родителе (он есть по умолчанию). Будет выглядеть как-то так:
class Alfa {
public:
Alfa (int a, int b) {};
};
class Beta : public Alfa {
public:
Beta (int a, int b) : Alfa {a, b} {};
Beta (Alfa &a) : Alfa {a} {};
};
Если все-таки хотите использовать указатель, то нужно будет его разыменовать перед инициализацией родительского класса:
Beta (Alfa *a) : Alfa {*a} {};
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу функцию преобразования матрицы смежности в список смежности (для графов)Т
Возможно ли изменить значение QSlider но при этом сделать так, что бы сигнал об изменении не был отправлен в определенном случае?
Я считываю побайтно в бинарном режиме файл и записываю в другойПри записи назад в файл если в первом файле будет символ CR программа запишет...