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. Вы должны заметить это, когда переопределите класс.

Другие вопросы по тегам