2013-10-24 1 views
0

Я недавно связан log4cpp в моем проекте, и я попытался сделать класс как таковой:log4cpp - конструктор по умолчанию не существует для log4cpp :: AppenderSkeleton

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++ вы не вынудили переопределить, это будет просто вести себя странно, если вы 't

ответ

1

Вы не вызываете конструктор базового класса явно и не имеете пустой конструктор. Для его конструктора требуется параметр std :: string. Вы должны заметить это, когда переопределяете класс.

1
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 зЬй :: строка & имя)

 Смежные вопросы

  • Нет связанных вопросов^_^