我有以下源代码:
// 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文件。
答案 0 :(得分:1)
使用
解决了问题// main.cpp
#include "a.h"
int main() {
A::push<int>(100);
}
与VC2008相比,您似乎需要为VC6提供更多提示。