在cpp文件中有模板函数定义 - 不适用于VC6

时间:2010-04-29 02:20:16

标签: c++ visual-c++

我有以下源代码:

// main.cpp
#include "a.h"

int main() {
    A::push(100);
}

// a.cpp
#include "a.h"

template <class T>
void A::push(T t) {
}

template void A::push(int t);    

// a.h
#ifndef A_H
class A {
public:
    template <class T>
    static void push(T t);
};
#endif

编译的代码很迷人,在VC2008下没问题。

但是当我来到我心爱的VC6时,它会给我错误:

  

main.obj:错误LNK2001:未解决   外部符号“public:static void   __cdecl A :: push(int)“(?push @ A @@ SAXH @ Z)

任何解决方法?我只是想确保我的函数定义重新进入cpp文件。

1 个答案:

答案 0 :(得分:1)

使用

解决了问题
// main.cpp
#include "a.h"

int main() {
    A::push<int>(100);
}

与VC2008相比,您似乎需要为VC6提供更多提示。