我是c ++元编程的初学者。 现在我测试一本教科书上的代码。 以下代码是代码的副本,但它给我一个错误消息 在第(1)行。在第(1)行,似乎代码尝试使用template关键字调用Layer2 :: function,因为它跟随另一个模板。不幸的是,我的编译器给了我一个错误消息,“错误:预期';'在'::'令牌之前。”。任何人都可以找到代码的问题? 非常感谢你。
template<typename T>
class Layer0 {
public:
template<int L1>
class Layer1 {
public:
template<int L2>
class Layer2 {
public:
virtual void function(void);
};
};
};
template<typename T, int L1>
class LayerTest {
public:
void pointer (typename Layer0<T>::template Layer1<L1>::template Layer2<L1>* ptr) {
// At the following line(1), I got an error message, error: expected ‘;’ before ‘::’ token.
ptr->template Layer2<L1>::function(); // (1) inhibit call of virtual function
}
};