首先感谢您的时间。我对模板有一点问题(我在这个模板中很新)。
使用Visual Studio 2012编译(或至少尝试过)C ++代码。
main.h:
class Main
{
public:
template<class T>
static void foo(T param1);
};
的main.cpp
#include "main.h"
template<class T>
static void Main::foo(T param1)
{
// do things
}
other.h
#include "main.h"
class Other
{
public:
void foo2();
};
other.cpp
#include "other.h"
void Other::foo2()
{
int var1 = 10;
Main::foo(var1); // Here is the link error.
}
问题就在于你可能知道相当常见的未解决的外部符号,所以我环顾网络以找到可以帮助我理解和解决这个链接错误的东西,我发现了一些东西,我已经尝试但没有结果。
我试过了:
1-在.h文件中实现foo功能
2-使用内联关键字
3-尝试导出(实际上编译器不支持)
但这些方法似乎都不适合我,所以很明显我做错了什么或者我错过了什么。
请记住,模板化函数必须在“Main”类中声明。将函数移动到“其他”类不会帮助我,尽管可以解决错误。
错误:
错误5错误LNK2019:未解析的外部符号“public:static void __fastcall CGame :: Push(char *,int,unsigned int&amp;)“(?? $ @ @@ CGame @@ SIXPADHAAI @ Z)函数”public:void __thiscall ClientManager :: RequestLogin(int,char *)“(?RequestLogin @ ClientManager @@ QAEXHPAD @ Z)
CGame 主要,推送 = foo(), ClientManager = 其他和 RequestLogin = foo2 。
再次感谢您的时间。