@ASMcoder-Source

C++ ошибка линковщика, хотя если скинуть код в один файл то компилирует, как исправлять?

В общем, в вопросе всё написал, и залил код на github.
Делаю всё через visual studio. У меня ноль предположений.

Код:
https://github.com/ASMcoder-Source/JUST-WORK-PLISS...

Ошибка:
Ошибка	LNK2019	ссылка на неразрешенный внешний символ "public: __thiscall ThreadWorker<void (__cdecl*)(struct ThreadData)>::ThreadWorker<void (__cdecl*)(struct ThreadData)>(int,int,void (__cdecl*)(struct ThreadData))" (??0?$ThreadWorker@P6AXUThreadData@@@Z@@QAE@HHP6AXUThreadData@@@Z@Z) в функции _main.	JUST WORK PLISS	C:\Users\vital\source\repos\JUST WORK PLISS\JUST WORK PLISS\JUST WORK PLISS.obj	1
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
@User700
Если класс шаблонный, то он должен быть весь быть в h (или hpp), и подключаться. Иначе он не скомпилирует. Т.е. отдельный cpp с реализацией методов он просто не может скомпилировать отдельно, т.к. не знает что это за класс T, параметр шаблона подставляется на этапе компиляции; и при разных T всё перекомпилируется (поэтому иногда, например, вместо передачи функции или функтора в виде superfunc (FUNC&& func), где FUNC это функция или объект с оператором (), можно пердать например superfunc (std::function меньше int(int) больше func), т.е. сделать нешаблонным, но иметь накладные расходы на посредник std::function, но машинный код будетсгенирован один раз и будет универсальным)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы