首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4cpp -不存在log4cpp::AppenderSkeleton的默认构造函数

log4cpp -不存在log4cpp::AppenderSkeleton的默认构造函数
EN

Stack Overflow用户
提问于 2013-10-24 17:21:37
回答 2查看 141关注 0票数 0

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

代码语言:javascript
复制
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++中,您不会被迫覆盖,如果您不这样做,它就会以奇怪的方式运行。

EN

回答 2

Stack Overflow用户

发布于 2013-10-24 17:32:31

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

票数 1
EN

Stack Overflow用户

发布于 2013-10-25 15:36:03

代码语言:javascript
复制
    class GameConsoleAppender : protected log4cpp::AppenderSkeleton
{
    private:
        Console& console;

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

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

Appender骨架::Appender骨架(const std::string& name)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19572489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档