0

我最近在我的项目中链接了 log4cpp,我尝试这样创建一个类:

class ConsoleAppenderSkeleton : public log4cpp::AppenderSkeleton
{
     private:
        Console& console;

     public:
        ConsoleAppenderSkeleton(Console& console) : console(console)
        {
          // Error! no default constructor exists for log4cpp::AppenderSkeleton
        }
}

我试过的

  • 添加另一个构造函数:ConsoleAppenderSkeleton(void);
  • 删除初始化列表

知道是什么原因造成的吗?我知道我需要实现诸如 close() 之类的继承函数,但是这些函数不应该导致此错误,并且在 C++ 中您不必强制重写,如果您不这样做,它只会以一种奇怪的方式表现

4

2 回答 2

1

您没有显式调用基类的构造函数,并且它没有空的构造函数。它的构造函数需要一个 std::string 参数。当你覆盖一个类时,你应该注意到这一点。

于 2013-10-24T17:32:31.477 回答
1
    class GameConsoleAppender : protected log4cpp::AppenderSkeleton
{
    private:
        Console& console;

    public:
        GameConsoleAppender(const std::string& name, Console& console) : 
            AppenderSkeleton(name),
            console(console)
            {
                std::cout << "Constructor called.";
            }
};

这就是答案。我必须用字符串继承它的基本构造函数,然后添加我自己的引用。如果其他人有这个问题,只需添加基础构造器:

AppenderSkeleton::AppenderSkeleton(const std::string& 名称)

于 2013-10-25T15:36:03.960 回答