log4cpp - конструктор по умолчанию для log4cpp::AppenderSkeleton не существует
Я недавно связал 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++ вам не нужно переопределять, это будет вести себя странным образом, если вы этого не сделаете
2 ответа
class GameConsoleAppender : protected log4cpp::AppenderSkeleton
{
private:
Console& console;
public:
GameConsoleAppender(const std::string& name, Console& console) :
AppenderSkeleton(name),
console(console)
{
std::cout << "Constructor called.";
}
};
Это был ответ. Я должен был унаследовать его базовый конструктор со строкой, а затем добавил свои собственные ссылки. Если у кого-то еще есть эта проблема, просто добавьте базовый consrtuctor:
AppenderSkeleton:: AppenderSkeleton (const std:: string & name)
Вы не вызываете конструктор базового класса явно, и у него нет пустого конструктора. Его конструктор требует параметр std::string. Вы должны заметить это, когда переопределите класс.