내가 다음 코드 는 헤더 파일에 넣어 경우 여러 정의 오류를 해결하는 방법에 대해 궁금 여러 포함 서로 다른 .cc 파일로 번에 연결하여 함께 연결 :
template <typename T>
class C {
static const int K;
static ostream& print(ostream& os, const T& t) { return os << t;}
};
// general case
template <typename T>
const int C<T>::K = 1;
// specialization
template <>
const int C<int>::K = 2;
이것은 어떻게 작동할까요? 여러 .cc 파일의 전문화가 필요한 경우 어떻게해야합니까? 그런 다음 여러 개의 .cc 파일을 동일한 정의로 연결하면 오류가 발생합니다. – user231536
@ user231536 : 일반 클래스를 작성하면 하나의 .cc에만 메소드 정의를 제공하므로 링커에서는 나머지 .cc 파일에서 메소드 정의를 사용할 수 있습니다. 완전 전문화에 대해서도 동일하게 적용됩니다. 하나의 .cc 파일에서만 전문화 기능을 제공하므로 링커는 다른 .cc 파일에서이 파일을 사용할 수 있도록합니다. – Paul