неявная реализация неопределенного шаблона и взаимного заголовка включает - PullRequest
0 голосов
/ 11 июля 2019

Это ошибка, которую я получаю от make:

In file included from ui/graphical/game/control/chatcommand/chatcommand.cpp:20:
ui/graphical/game/control/chatcommand/chatcommand.h:67:41: error: 
      implicit instantiation of undefined template 'cChatCommandParser<>'
        return cChatCommandParser<NewArgument>(cChatCommandParser<>(std::move(*thi...
                                               ^
ui/graphical/game/control/chatcommand/chatcommand.h:27:7: note: 
      template is declared here
class cChatCommandParser;
  ^

chatcommand.h:

...
template<typename... Arguments>
class cChatCommandParser;
...
class cChatCommand
{
public:
    ...
    template<typename NewArgument, typename... Args>
    cChatCommandParser<NewArgument> addArgument(Args&&... args);
    ...
};
template<typename NewArgument, typename... Args>
cChatCommandParser<NewArgument> cChatCommand::addArgument(Args&&... args)
{
    return cChatCommandParser<NewArgument>(cChatCommandParser<>(std::move(*this)), NewArgument(std::forward<Args>(args)...));
}

Очевидным решением будет #include chatcommandparser.h.К сожалению, chatcommandparser.h уже содержит chatcommand.h.

Какой самый консервативный способ распутать это?Я действительно не знаю, что делает этот код, и просто хочу скомпилировать его.

Обратите внимание, что GNU gcc компилирует это без проблем.Я пытаюсь скомпилировать это с яблоками GCC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...