나는 C++ 이름 축소 코드에 대한 몇 가지 테스트 케이스를 작성하고 있는데, 이것을 컴파일하려고하면 이상한 오류가 발생한다. (다음은 병리학 적으로 나쁜 C++ 코드이므로 실제로 사용하지 않을 것이다.)C++ 템플릿 질문
"typetest.cpp", line 165: error: nontype "Oog<T, U>::Huh<F>::Wham [with F=T]"
is not a template
어떤 아이디어를 내가 해결할 수있는 방법을 다음과 같이
template<class U, class V>
class TStruct
{
U u;
V v;
public:
void setU(const U& newu) {u = newu; }
};
template<class T, class U>
class Oog
{
T t;
U u;
public:
Oog(const T& _t, const U& _u) : t(_t), u(_u) {}
void doit(TStruct<T,U> ts1, TStruct<U,T> ts2, U u1, T t1) {}
template<class F>
class Huh
{
F f;
public:
template<class V>
class Wham
{
V v;
public:
Wham(const V& _v) : v(_v) {}
void joy(TStruct<T,V> ts1, U u, F f) {}
};
};
int chakka(const Huh<T>::Wham<U>& wu, T t) {} // error here
};
오류가 무엇입니까?
감사합니다. 나는'typename'에 대해서 알고 있었지만,'template' 키워드를 그런 식으로 사용해야한다는 것을 모르고있었습니다. –
+1 : 좋은 답변입니다. 이번 주에 적어도 두 번이나! : D –
@Tomalak, 당신은'좋은 대답'코멘트를 주며, 누군가가 그것을 반대하면 당신의 투표/코멘트를 다시받습니다 !! – iammilind