【问题标题】:Returning value of type defined in a class template返回类模板中定义的类型的值
【发布时间】:2021-02-14 18:56:34
【问题描述】:

我是 C++ 新手,并试图从我的 X 类的 size() 成员返回一个值;返回类型必须是X::size_type

template <class T> class X {
public:
    typedef size_t size_type;
    size_type size() const;
    // ...
}

template <class T> X<T>::size_type X<T>::size() const {
    // ...
}

上面的代码会导致错误。我在X&lt;T&gt;::size_type 之前添加了typename,问题似乎已解决,但我不明白为什么......

这是正确的方法吗?

【问题讨论】:

  • 是的,这里的 typename 是正确的。

标签: c++ class templates visual-c++ return-type


【解决方案1】:

由于 C++ 的复杂且有时模棱两可的语法,有时解析器/编译器需要提示。

一般而言,当引用类中定义的类型时,需要typename 来提示编译器您正在谈论的是类型而不是值(因为X&lt;T&gt;::size_type 可以是两者之一)。

【讨论】:

    猜你喜欢
    • 2019-06-09
    • 2013-08-01
    • 2021-12-11
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多