[英]Access protected base class type for other base class template initialization
[英]template Base Class initialization
而在视觉 c++ 中,下面的代码被接受,g++ 将产生错误:“类派生没有任何字段名称基础”这是遵循标准?
template <class T>
class Base
{
public:
Base(){};
};
template <class T>
class Derived:public Base<T>
{
public:
Derived():Base(){}
};
顺便说一句:都接受
Derived():Base<T>(){}
所以与此同时,我会关注 gcc
MSVC++ 不正确。 Base
是一个模板,而不是一个类型。
请注意,在通常情况下, Base
在Derived<T>
的 scope 中查找,这意味着它将首先找到从Base<T>
继承的注入的 class 名称,它指的是Base<T>
类型。 但是由于您有一个从属的基础 class,因此找不到从Base<T>
继承的名称(基础 class scope 未被调查)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.