首页 > 后端开发 > C++ > 什么时候需要 C `typename` 关键字?

什么时候需要 C `typename` 关键字?

Susan Sarandon
发布: 2024-12-21 18:07:11
原创
734 人浏览过

When is the C   `typename` Keyword Necessary?

什么时候需要“typename”关键字?

在 C 中,引用某个对象时需要“typename”关键字嵌套名称是从属名称,即嵌套在具有未知参数的模板实例中。

从属名称是一个在编译时无法完全解析的名称,因为它依赖于模板参数。例如,在下面的代码中:

template<class K>
class C {
    struct P {};
    vector<P> vec;
    void f();
};

template<class K> void C<K>::f() {
    typename vector<P>::iterator p = vec.begin();
}
登录后复制

名称向量

::iterator是一个依赖名称,因为它依赖于模板参数K。在编译时,编译器不知道该值K,因此它无法完全解析名称向量

::iterator。

“typename”关键字用于告诉编译器该名称vector

::iterator 是一个类型名称,即使它无法在编译时完全解析。这是必要的,因为编译器需要知道变量 p 的类型才能生成正确的代码。

还有其他情况必须指定“typename”,例如引用嵌套类型时在模板类中声明。例如,在以下代码中:

template<class T>
struct A {
    typedef typename T::type my_type;
};
登录后复制

名称 typename T::type 是在模板类 A 内部声明的嵌套类型名称。在编译时,编译器不知道T,因此它无法完全解析名称 typename T::type。

“typename”关键字用于告诉编译器名称 typename T::type 是一个类型名称,即使它无法在编译时完全解决。这是必要的,因为编译器需要知道变量 my_type 的类型才能生成正确的代码。

以上是什么时候需要 C `typename` 关键字?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板