Шаблонный класс не будет построен должным образом - PullRequest
1 голос
/ 19 февраля 2010

Заголовок

class linkNode {
    public:
        linkNode(void *p) {
            before = 0;
            after = 0;
            me = p;
        }

        linkNode *before;
        void *me;
        linkNode *after;
    };

    template <class T>
    class list
    {
    public:
        list(void) { first = last = NULL; size = 0; }
        ~list(void) { while(first) deleteNode(first); }      
    private:
        void deleteNode(linkNode *l);

        linkNode *first, *last;
        unsigned int size;
    };

.cpp

template <class T>
inline void list<T>::deleteNode(linkNode *l) {
    if(c->before)
        if(c->after) {
            c->before->after = c->after;
            c->after->before = c->before;
        } else
            c->before->after = last = NULL;
    else
        if(c->after)
            c->after = first = NULL;
    delete c; size--;
}

У меня есть этот набор для сборки в виде .lib, и он прекрасно работает. Когда я пытаюсь ePhys::list<int> myList; я получаю ошибку компоновщика, говорящую, что он не может найти ePhys::list<int>::deleteNode(class ePhys::linkNode *) Это не проблема с настройкой с использованием библиотеки, я тестировал с другими фиктивными классами.

Я использую MSVC 2010 beta.

Есть ли способ, как правильно связать это?

1 Ответ

4 голосов
/ 19 февраля 2010

C ++ на самом деле не поддерживает отдельную компиляцию шаблонов - вам нужно поместить весь код вашего шаблона в заголовочный файл (ы).

...