1
헤더에게템플릿 클래스 내가 lib 디렉토리로 구축이 세트가 제대로
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--;
}
을 구축하지 않으며 그것을 잘 구축합니다. 내가 시도 할 때 ePhys::list<int> myList;
내가 링커 오류를 얻을 수 없다는 말을 듣는다. ePhys::list<int>::deleteNode(class ePhys::linkNode *)
이것은 라이브러리를 사용하여 설정하는 데 문제가 아니며 다른 더미 클래스로 테스트를 거쳤습니다.
MSVC 2010 베타를 사용 중입니다.
제대로 링크 할 수있는 방법이 있습니까?
템플릿 코드를 구성하는 일반적인 방법은 'foo.h'의 클래스 선언을 정상적으로 두는 것입니다. 'foo.hxx' (접미사는 프로젝트마다 다릅니다). 'foo.h'의 맨 아래 - 그래도 포함 가드 안에 - 구현은'#include "foo.hxx"지시어를 사용하여 포함됩니다. –
@ gareth.stockwell 너무 자주 보았습니다. 그 이점은 무엇입니까? –
@Neil Butterworth : 아이디어는 인터페이스와 구현을 분리하는 것입니다. 사용자로부터 구현 세부 사항을 숨기십시오. – Andy