【发布时间】:2016-01-25 22:16:58
【问题描述】:
以下源码旨在创建一个抽象基类(SubsystemClass)和一个派生的最终类(DisplaySubsystemClass)。派生类的构造函数的实现因错误“没有重载函数“DisplaySubsystemClass::DisplaySubsystemClass”的实例与指定类型匹配”而失败。我很困惑。
子系统类.hpp
#ifndef SUBSYSTEMCLASS_HPP
#define SUBSYSTEMCLASS_HPP
#include <memory>
#include "DriverClass.hpp"
class SubsystemClass
{
protected:
std::shared_ptr<DriverClass> _driver;
public:
virtual ~SubsystemClass();
enum DriverCatalog;
};
#endif
DisplaySubsystemClass.hpp
#ifndef DISPLAYSUBSYSTEMCLASS_HPP
#define DISPLAYSUBSYSTEMCLASS_HPP
#include <memory>
#include "../SubsystemClass.hpp"
#include "DisplayDriverClass.hpp"
class DisplaySubsystemClass final : public SubsystemClass
{
private:
std::shared_ptr<DisplayDriverClass> _driver;
public:
DisplaySubsystemClass(DisplaySubsystemClass::DriverCatalog driverCatalogItem);
~DisplaySubsystemClass();
enum DriverCatalog {
DISPLAY_DRIVER_CONSOLE,
DISPLAY_DRIVER_CURSES,
DISPLAY_DRIVER_SFML,
DISPLAY_DRIVER_OPENGL
};
};
#endif
DisplaySubsystemClass.cpp
#include <memory>
#include "DisplaySubsystemClass.hpp"
#include "SFMLDisplayDriverClass.hpp"
DisplaySubsystemClass::DisplaySubsystemClass(DisplaySubsystemClass::DriverCatalog driverCatalogItem)
{
}
DisplaySubsystemClass::~DisplaySubsystemClass()
{
}
【问题讨论】:
-
你需要告诉它调用哪个父构造函数 - stackoverflow.com/questions/120876/…
-
编译器消息对这个问题非常没有帮助
-
我不明白自己要覆盖基类构造函数,因为它没有;除了可能生成的默认值之外。我错了吗?
标签: c++ inheritance constructor