У меня возникла проблема с Eclipse при создании абстрактных классов. Я не очень привык иметь дело с заголовочными файлами и такими, мой код в основном выглядит следующим образом: (не отображающее все, только базовый класс, чтобы дать представление о том, как он выглядит)C++ eclipse. Абстрактный класс не будет компилироваться
Equipment.h
namespace Equipments {
class Equipment{
public:
virtual ~Equipment();
virtual std::string get_category() const = 0;
protected:
Equipment(std::string name);
private:
const std::string name_;
};
class Weapon : public Equipment {
public:
Weapon(std::string name, std::string something_else);
virtual ~Weapon();
std::string get_category() const override { return "Weapon"; };
private:
const std::string something_else_;
};
} //end of namespace
Теперь я получил проблему как с .h и .cpp файл
в .h файле, под конструктору оружия, я привык писать (так как я не использую файлы заголовков):
Weapon(std::string name, std::string something_else)
: Equipment{name}, something_else_{something_else}
{}
Поскольку я не могу это сделать (насколько мне известно), как мне отправлять параметры в родительский класс? (в этом случае, позволяя eclipse знать, что я хочу, чтобы мой параметр имени отправлен в родительский класс оборудования)
Должен ли я сделать это в файле .cpp, и если да, то как?
А теперь вторая проблема.
В файле .cpp я создаю мой класс оборудования, как это:
namespace Equipments {
Equipment::Equipment(std::string name) {
name_ = name;
}
Equipment::~Equipment() {
}
std::string Equipment::get_name()
{
return name_;
}
//etc
Но я не могу показаться, чтобы создать свой класс оружия. Если я пытаюсь:
Equipment::Weapon(std::string name, std::string something_else)
Я просто член decleration не найден, и если я стараюсь:
Weapon::Weapon(std::string name, std::string something_else)
я не получаю никакой функции согласования для вызова «оборудований :: Оборудование :: Оборудование()»
Я просто застрял, не зная, как затмение хочет, чтобы я написал свой код, я знаю, что это немного проблема с noob, но я долгое время не использовал файлы заголовков или C++ в eclipse. Я действительно близок к тому, чтобы просто выбрать свой ноутбук и программу в ubuntu и gedit, вместо этого мне не нужно иметь дело с классами заголовков, однако я тоже ничего не узнаю.
Eclipse - это просто раздутый текстовый редактор, вам не нужно ничего знать, и это действительно не актуально. Теперь, что не может это сделать? Вы попытались получить сообщение об ошибке? Какая ошибка? Или вы почему-то поняли, что это не сработает? – Useless
Вы пытались удалить эту ошибку из отчетов об ошибках (Предпочтения (или свойства проекта) -> C++ -> Анализ кода)? Иногда Eclipse просто немного тупой. – Bikush