如何从另一个类调用静态模板成员函数

时间:2013-08-23 16:03:10

标签: c++ templates member-functions

首先感谢您的时间。我对模板有一点问题(我在这个模板中很新)。

使用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

再次感谢您的时间。

0 个答案:

没有答案