Noob 질문은 여기에 있습니다. 순환 종속성이있는 클래스가 있으므로이를 선언했습니다. 이제이 템플릿을 사용해 볼 계획입니다. 앞으로 선언 된 클래스가있는 템플릿 함수
class C;
class A {
public:
virtual void foo(C *c);
template <class T>
void changeProperty(C *c, string& s) {
void* obj = c->getMap()->at(s); // does not compile
// (did not include the rest for brevity)
}
}
이이 줄에서 컴파일에 실패 A.h
에서class C {
public:
virtual void getMap();
}
// C.h
에서// 함수 '하여 getMap()를'하지 않는 클래스 C를 알리는 지정된. 이 문제를 해결할 수 있습니까? 그렇다면 어떻게?
이 당신이 헤더 파일에 함수를 정의하지만 그것이 내가 생각했던 소스 파일 (cpp를) – Xale
에서 할 수없는 이유입니다 :
그래서 전처리 결과는 같은 무언가로 끝날 것 템플릿 함수가 다르고 헤더에 정의되어야했습니다. 그것이 대부분의 사례에서 보여준 것입니다. 나는 그것이 틀렸다고 생각한다. –
예 sry. 다른 파일에 소스를 가질 수 없습니다. 그러나 헤더에서 더 자세히 정의 할 수 있습니다. – Xale