Наличие определения функции шаблона в файле cpp - Не работает для VC6 - PullRequest
0 голосов
/ 29 апреля 2010

У меня есть следующий исходный код:

// 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) * ​​1014 *

Есть ли обходной путь? Я просто хочу убедиться, что мое определение функции находится внутри файла cpp.

1 Ответ

1 голос
/ 29 апреля 2010

Проблема решена с помощью

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

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

Похоже, вам нужно больше подсказывать VC6 по сравнению с VC2008.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...