gpt4 book ai didi

c++ - 类类型的详细类型说明符

转载 作者:行者123 更新时间:2023-11-28 02:09:03 24 4
gpt4 key购买 nike

这是关于问题的

A class name introduced inside a class is not treated as a nested class name .

我很困惑为什么第 1 部分和第 2 部分在标准的 §3.3.2 [basic.scope.pdecl]/p7 方面有所不同:

两者都是详细类型说明符,应该属于同一部分但似乎范围似乎不同

第 1 部分:

struct A 
{
struct B;
B* m_b;
};

第 2 部分:

struct A 
{
struct B* m_b;
};

请指导我。

最佳答案

也许这个小例子有助于详细说明:

#include <iostream>

struct B {

void call() { std::cout << "B" << std::endl; }
};

struct A {

struct B* p;
};

struct A2 {

struct B;
struct B* p;
};

struct A2::B {
void call() { std::cout << "A2::B" << std::endl; }
};

int main()
{
B pb;
A2::B pb2;

auto a = A { &pb };

a.p->call();

auto a2 = A2 { &pb2 };
a2.p->call();

return 0;
}

预期结果:

B
A2::B

总结:

A::p 是一个 B*

A2::p 是一个 A2::B*

A2::B 和 B 是完全不同的类

关于c++ - 类类型的详细类型说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36422790/

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