实现派生类构造函数时出错:"重载函数的任何实例都与指定的类型匹配

Error Implementing Derived Class Constructor: "No Instance of Overloaded Function Matches the Specified Type

本文关键字:实例 任何 类型 函数 构造函数 派生 出错 重载 实现      更新时间:2023-10-16

以下源代码旨在创建一个抽象基类(SubsystemClass)和一个派生的最终类(DisplaySubsystemClass)。 派生类的构造函数的实现失败,出现错误"没有重载函数"DisplaySubsystemClass::D isplaySubsystemClass"的实例与指定的类型匹配"。 我很困惑。

子系统类.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

显示子系统类.cpp

#include <memory>
#include "DisplaySubsystemClass.hpp"
#include "SFMLDisplayDriverClass.hpp"
DisplaySubsystemClass::DisplaySubsystemClass(DisplaySubsystemClass::DriverCatalog driverCatalogItem)
{
}
DisplaySubsystemClass::~DisplaySubsystemClass()
{
}
枚举应在构造

函数中用作参数类型之前声明。

相关文章: