클래스 B<certain X>
은 모든 C<any,certain X>
과 친구가되고 싶어합니다.
나는 그것을하는 방법을 찾기 위해 내 머리카락을 꺼내입니다."템플릿 사용"으로 정의 된 템플릿 (별칭) 클래스를 가진 친구에게 어떻게?
다음은 문제가있는 행을 추가하지 않는 한 성공적으로 컴파일 된 전체 코드입니다. 여기
#include <string>
using namespace std;
enum EN{ EN1,EN2 };
template<EN T1,class T2> class C{
public: C(){
std::cout<<T1<<std::endl;
}
};
template<class T2> class B{
template<EN T1> using CT = C<T1,T2>;
//template<EN TX> friend class CT; //<-- error if insert this line
public: static void test(){
CT<EN1> ct;
}
};
int main() {
B<int>::test();
return 0;
}
내가 (모든 실패) 시도 무엇 : -
template<EN T1> friend class C<T1,T2>;
template<EN TX> friend class CT;
template<typename TX> friend class CT;
template<class TX> friend class CT;
template<class TX> friend class CT<TX>;
template<typename> friend typename CT;
질문 : 올바른 문 (1 라인)를 삽입하는 무엇입니까?
친구 문장의 경우 C
대신 CT
을 사용하고 싶습니다.
나는 a similar question과 this을 읽었지만, 그것들은 내 것보다 간단합니다.
는 (나는 ++ C에 새로운 오전.)
일반 C (CT 대조)와 동일합니까? 즉, 2 개의 friend 문장이 필요합니까? – javaLover
@javaLover 네, 동일합니다. – songyuanyao