gpt4 book ai didi

c++ - typedefed 类型对派生类总是可见的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:40 28 4
gpt4 key购买 nike

如果我在公共(public)基类中 typedef 某些类型,C++ 标准是否保证 typedefed 类型对于派生类始终可见?

例如:

struct A
{
typedef int T;
};

struct B : A
{
void f(T) {}; // Does the C++ standard guarantee it can be compiled?
};

int main()
{
B().f(8);
}

最佳答案

typedef 在类中定义的与类的其他名称具有相同的访问规则。 privateprotectedpublic 名称的常用访问规则也适用于 typedef

来自标准草案 n3337:

7.1.3 typedef 说明符

  1. ...在其声明范围内,typedef-name 在句法上等同于关键字,并以第 8 条中描述的方式命名与标识符关联的类型。

9.2 类成员

  1. 类定义中的成员规范声明了类的完整成员集;不能在别处添加任何成员。类的成员是数据成员、成员函数 (9.3)、嵌套类型和枚举数。数据成员和成员函数是静态的还是非静态的;见 9.4。嵌套类型是在类中定义的类 (9.1、9.7) 和枚举 (7.2),以及使用 typedef 声明 (7.1.3) 声明为成员的任意类型。

关于c++ - typedefed 类型对派生类总是可见的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24545020/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com