템플릿 선언 중에 .h
끝에 .cpp
을 추가해야하는 이유에 대해 감히 대답하지 않습니다. 그것은 StackOverflow에서 여러 번 답변을 얻었 기 때문입니다.왜 템플릿 헤더 끝에 .cpp를 추가하는 순환 의존성이 아닌가요?
하지만 내 질문은, 어떻게하지 순환 종속성, 또는이다 와서 컴파일러 내가 헤더의 끝에서 .CPP을 추가 할 때, .cpp
에 .h
에 .cpp
및 .h
추가에 보관하지 않는 방법?
C++ 11은 이상한 템플릿 요구 사항을 해결하려고합니까?
@Edit : 그냥 헤더 파일
#ifndef MYMAP
#define MYMAP
#include <iostream>
#include <string>
using namespace std;
template<typename ValType>
class MyMap
{
public:
MyMap();
~MyMap();
void add(string key, ValType val);
ValType getValue(string key);
private:
static const int NumBuckets = 99;
struct cellT
{
string key;
ValType val;
cellT* next;
};
cellT *buckets[NumBuckets];
int hash(string key, int numBuckets);
cellT* findCellForKey(string key, cellT *head);
MyMap(MyMap&);
MyMap operator = (MyMap&);
};
#include "MyMap.cpp" //included .cpp
#endif
@Edit이 포함 : MyMap.cpp
#include "MyMap.h"
//rest of the code
감사합니다.
이#ifndef MYMAP
#define MYMAP
...
#endif
.h
가 포함 된 두 번째는, 효과적으로이다 MYMAP
이후에는 조합이 없었다 :이 기술의 장점을 차치
'이 기술의 장점을 버리는 것'.. 더 좋은 기술이 있다면 제안 해주세요. –
@pranitkothari : 기본 옵션은 전체 템플릿 코드를'.h' 파일에 넣어야한다고 생각합니다. 구현을'.cpp' 파일에 넣음으로써 달성하고자하는 것이 무엇인지 완전히 명확하지 않습니다. – NPE
사실. 나는 모든 것을 인라인 할 수 있었다. –