Ссылка на неразрешенный внешний символ. Статическая функция с шаблоном

Не получается скомпилировать код из-за функции которая использует шаблон для принятия функции в качестве аргумента. Выдает вот такую ошибку:

LNK2019 Ссылка на неразрешенный внешний символ "public: static void __cdecl Query::New<void (__cdecl*)(void)>(void (__cdecl*&&)(void))" (??$New@P6AXXZ@Query@@SAX$$QAP6AXXZ@Z) в функции __catch$?New@Client@@SAHPAUlua_State@@@Z$0.

Собственно вот код:

// Query.h

class Query {
public:
    template<typename Func>
    static void New(Func func);
};
// Query.cpp

#include "Query.h"

template <typename Func>
void Query::New(Func func) {
    // ...
    func();
    // ...
}
// Client.h

class Client {
public:
    static void SomeFunc();
    static int Connect(lua_State* L);
};
// Client.cpp

#include "Client.h"
#include "Query.h"

void Client::SomeFunc() {
   // ...
}

int Client::Connect(lua_State* L)
{
    // ...
    Query::New(&SomeFunc)
    return 1;
}

Сама цель функции Query::New заключается в том чтобы запустить функцию в отдельном потоке. Возможно ли как-то устранить эту проблему?


Ответы (0 шт):