最近,我将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++中,您不会被迫覆盖,如果您不这样做,它就会以奇怪的方式运行。
发布于 2013-10-24 17:32:31
您没有显式地调用基类的构造函数,而且它没有空构造函数。它的构造函数需要一个std::string参数。当您重写一个类时,您应该注意到这一点。
发布于 2013-10-25 15:36:03
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)
https://stackoverflow.com/questions/19572489
复制相似问题