Требуется публичное наследование:
class Weapon : Shopable
должно быть:
class Weapon : public Shopable
Кроме того, такие имена, как _SHOPABLE_H_
, недопустимы в написанном пользователем коде C ++, поскольку они зарезервированы дляРеализация C ++.Забудьте ведущие подчеркивания и используйте SHOPABLE_H
.
И:
Weapon(int Cost,int Damage,std::string Name)
должно быть:
Weapon(int Cost,int Damage, const std::string & Name )
, чтобы избежать ненужных накладных расходов при копировании строки.
Возможно, вы захотите переосмыслить свое соглашение об именах - обычно имена параметров функций в C ++ начинаются со строчной буквы.Имена, начинающиеся с заглавных букв, обычно зарезервированы для пользовательских типов (т. Е. Классов, структур, перечислений и т. Д.)
Интересно, из какого учебника C ++ вы изучаете?