定义指向 C++ 中相同元素类型的元素

Define an element that points to a same element type in C++

本文关键字:元素 类型 C++ 定义      更新时间:2023-10-16

我想定义一个指向相同元素类型的元素,如下所示:

#define Foo { Foo*, ..., ... }

例如,这有助于我创建一个简单的树,而无需创建任何辅助类:

#define TreeNode std::deque(std::pair(char, TreeNode*))
TreeNode mRootNode;

但是,这无法完成,因为Foo在其声明中引用自身时仍未声明。

我的问题是...为什么在使用类实现时允许相同的功能?有没有另一种更简单的方法,而不是面向对象,来定义我的Foo

定义指向相同元素类型的元素C++

定义

可以引用同一类型的另一个对象的类型的一种简单方法是定义如下所示的数据结构:

struct Foo {
    Foo* link;
};

无需宏。

这是允许的,因为在声明成员指针时已声明Foo。语言规则允许递归类,但不允许递归预处理器宏。


附言澄清问题中的一些混淆:虽然C++中的类支持面向对象的功能,但您可以选择不使用这些功能,而是使用类,就像在 C 中使用结构一样。