Изучаю C++.
У меня есть три класса:
Код: Выделить всё
// Первый класс - юниты.
class Unit{
public:
char* name; // Unit's name.
};
// Второй класс - оружие.
class Weapon{
public:
char* name; // Weapon's name.
};
//И, наконец, третий класс - наследник первых двух.
class Tank: public Unit,
public Weapon{
// ...
};Далее я делаю так:
Код: Выделить всё
Tank *tanks = new Tank;
tanks[0].name = "MegaWeapon";И, естесственно, компилятор ругается.
Я-то понимаю, Tank наследует все поля от предков. А у наследуемых предков есть поле с одинаковым именем name.
Я решил обойти проблему путем добавления префиксов к полям.
То есть в классе Unit я поменял название поля name на u__name, в классе Weapon - на w__name.
Все работает, но я бы хотел узнать, существует ли более "элегантное" решение этой "проблемы"?