繁体   English   中英

模板基础 Class 初始化

[英]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是一个模板,而不是一个类型。

请注意,在通常情况下, BaseDerived<T>的 scope 中查找,这意味着它将首先找到从Base<T>继承的注入的 class 名称,它指的是Base<T>类型。 但是由于您有一个从属的基础 class,因此找不到从Base<T>继承的名称(基础 class scope 未被调查)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM