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

时间:2017-01-20 18:57:27

标签: c++ oop declare

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

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

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

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

TreeNode mRootNode;

然而,这是不可能的,因为在声明中引用自身时仍未声明Foo

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

1 个答案:

答案 0 :(得分:2)

  

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

定义一个可以引用同一类型的另一个对象的类型的简单方法是定义一个这样的数据结构:

struct Foo {
    Foo* link;
};

不需要宏。

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

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