class Human : public Name{};
struct Ilya : public Name{};
struct Danil : public Name, public Lastname{};
int main(){
Ilya ilya;
Danil danil;
std::list<Human*> classes;
classes.push_back(&ilya);
classes.push_back(&danil);
return 0;
};
Как сделать, чтобы это заработало?
Наследовать Илью и Данилу от класса Human
А можно ли передать эти два класса, чтобы сохранилось наследование от Name и Lastname, но при это необязательно, чтобы класс включал в себя эти поля
а что не работает -то ?
Можно ещё хранить в списке указатели на Name
оно не скомпилится, там в контейнер указателей на одного наследника пытаются положить указатель на другого наследника
НЕЗАМЕТИЛ СРАЗУ, СОРИ
Есть какие методы как это можно решить?
так вам под первым сообщением еще отвечали и тут выше. Вообще очень странная идея наследовать конкретного человека от класса человек. Равно как и от класса Имя. Возможно, это просто для пробы пера было сделано, но выглядит нелепо. Имя и фамилия это атрибуты человека - логично их сделать просто полями класса Человек. А конкретные люди - это соответственно просто экземпляры этого класса
Это пример. У меня есть class RigidBody : public Body, public Kinematics, public Collision; class StaticBody : public Body, public Collision; struct Player : public core::RigidBody; struct Ground : public core::StaticBody; Мне надо получить любой класс , который содержит Collision(то есть Player и Ground), но при этом получить не только поля Collision, но и поля других классов(Body, Kinematics).
А зачем наследоваться от Коллизии? Кмк лучше выделить иерархию классов, которые могут иметь коллизию, а сам объект коллизии запихать в поля класса каким-нибудь условным указателем, чтобы он был nullable
nullable поля чаще всего не нужны. если человек хотел наследовать класс от коллизии, значит она и не nullable.
Я подумал, что он делает что-то типа игрового движка. Там коллизии может и не быть у эктора
Обсуждают сегодня