我最近在我的项目中链接了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++您不会被迫覆盖,如果您不这样做,它只会以奇怪的方式运行
您没有显式调用基类的构造函数,并且它没有空构造函数。它的构造函数需要一个 std::string 参数。在重写类时应注意这一点。
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& name)