【问题标题】:Constructor of Nested Classes of Templates Classes in C++C++中模板类的嵌套类的构造函数
【发布时间】:2016-10-07 21:24:58
【问题描述】:

我在模板类中有一个嵌套类,并希望在范围之外实现它的构造函数。 但是,我收到以下错误:

')' 标记之前的预期不合格 ID

template<class T>
class mainClass {
private:
    class nestedClass {
    public:
        nestedClass();
    };
};

template<class T>
typename mainClass<T>::nestedClass::nestedClass(){
    // code here
}

【问题讨论】:

  • 删除typename

标签: c++ class templates constructor nested


【解决方案1】:

删除typename:

template<class T>
mainClass<T>::nestedClass::nestedClass(){
    // code here
}

Live Demo

有关我们需要在哪些情况下使用typename 的更多信息,请参阅here

【讨论】:

  • 它不起作用。我认为编译器必须有一个类型名才能意识到 nestedClass 是一种类型而不是其他东西(例如静态变量或函数)。
【解决方案2】:

我的问题似乎与我之前没有注意到的另一个错误有关。 无论如何,typename 在使用它的上下文中确实不是必需的。

谢谢。

【讨论】:

    猜你喜欢
    • 2015-07-03
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2023-03-23
    相关资源
    最近更新 更多