【问题标题】:template Base Class initialization模板基类初始化
【发布时间】:2011-05-02 18:18:02
【问题描述】:

虽然在 Visual c++ 中接受以下代码,但 g++ 将生成错误: “类 Derived 没有任何字段名称 Base” 哪个符合标准?

template <class T>
class Base
{
public:
    Base(){};
};

template <class T>
class Derived:public Base<T>
{
public:
    Derived():Base(){}
};

顺便说一句:都接受

Derived():Base<T>(){}

那么,我会关注 gcc

【问题讨论】:

    标签: c++ templates gcc initialization


    【解决方案1】:

    MSVC++ 不正确。 Base 是一个模板,而不是一个类型。

    注意,通常情况下,Base是在Derived&lt;T&gt;的范围内查找的,这意味着它会首先找到继承自Base&lt;T&gt;的注入类名,它指的是Base&lt;T&gt;类型。但是由于您有一个依赖基类,因此找不到从Base&lt;T&gt; 继承的名称(未查看基类范围)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-10
      • 2021-04-23
      • 1970-01-01
      • 2016-08-08
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多