tags:

views:

43

answers:

1

I have the following source code :

// 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

The code compiled charming and no problem under VC2008.

But when come to my beloved VC6, it give me error :

main.obj : error LNK2001: unresolved external symbol "public: static void __cdecl A::push(int)" (?push@A@@SAXH@Z)

Any workaround? I just want to ensure my function definition is re-inside cpp file.

+1  A: 

The problem solved by using

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

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

It seems that you need to provide more hint to VC6, compared with VC2008.

Yan Cheng CHEOK