gpt4 book ai didi

c++ - 如何在 C++ 中预先声明一个 typedef 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:08:01 24 4
gpt4 key购买 nike

比如类A有类B的一个成员,一般情况下,为了最小化编译依赖,我们经常让类A包含类B的指针,并在类A的声明中预先声明类B。看起来像这样:

//B.h
class B
{
....
};

//A.h
class B;
class A
{
B*b;
A();
...
};

//A.cpp
#include "B.h"
A::A()
{
b=new B();
...
};

但现在我有一个问题:如果 B 的类是这样使用 typedef 定义的:

typedef class
{
....
}B;

先前预先声明的方法在这种情况下将不起作用。我应该如何在 A.h 中预先声明 B 类?

最佳答案

在代码typedef class { .... } B; 中,它是一个未命名类,B 是未命名类的类型别名。

不定义一个未命名的类是不可能的(即提供类主体);并且不可能声明 B 是未命名类的 typedef。

没有 typedef 的前向声明这样的东西。通常,typedef 可以为稍后完成的不完整类型声明一个别名,但未命名的类不能充当这些角色中的任何一个。

删除了响应选民反馈的进一步建议

注意:该问题使用了“预先声明”一词。 C++ 标准不使用术语“pre-declare”或更常见的行话“forward-declare”。在标准的术语中,类的前向声明简称为类声明。如果从上下文中还不清楚,可以通过说“不是定义的声明”来澄清这一点。

关于c++ - 如何在 C++ 中预先声明一个 typedef 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40354937/

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