我正在模板上阅读本书,并在下面的示例中找到了强调模板关键字使用的示例。一世 尝试下面的例子,但它给出了错误
<之前的预期模板名称代币 D类:public shell :: template In :: template Deep ^
#include <iostream>
using namespace std;
template <typename T>
class shell {
public:
template<int N>
class in {
public :
template <int M>
class Deep {
public:
virtual void f() { cout << endl << "NO" << endl; }
};
};
};
template <typename T, int N>
class weird
{
public:
void case1(typename shell<T>::template In<N>::template Deep<N>* n)
{
class D : public shell<void>::template In<N>::template Deep<N>
{
public :
virtual void f() { cout << endl << "N" << endl;}
};
n = new D();
n-> f();
}
};
int main() {
weird<void,1> obj;
obj.case1(NULL);
return 0;
}
提前致谢
答案 0 :(得分:1)
你在其中一个课上使用了错误的案例:
void case1(typename shell<T>::template In<N>::template Deep<N>* n)
// ^^^^^
应该是:
void case1(typename shell<T>::template in<N>::template Deep<N>* n)
其他一切都很好。