如何最好地处理需要具有自类型对象的C ++类?

我是C ++的初学者,并且在其他编程语言(例如Python,Javascript)方面有一定的经验。 我对C ++中的“递归”类(在其内部声明的类)有几个问题。

问题1

对于具有构造函数的类,我知道在其内部对其进行声明将导致其声明不完整,因此编译器将无法计算出其对象的大小。 到目前为止,我了解到,类声明只能包含指向自身类型的指针或自身类型的静态对象。 但是,我不明白这两种方法的好处是什么?我的目标是使用类似于树结构/网络的类,其中每个节点都存储其父节点和子节点!

问题2

父节点和子节点都将使用类函数进行设置。如何在同一类的函数中声明自身类型?我还使用静态还是指针?在这种情况下如何正确初始化?

example.cpp

#include "Point.hpp"

class Node {
    //Node parent; // ERROR

    // Option 1: Pointer
    Node * parent;

    // Option 2: Static
    static Node parent;

    vector<Node> children;

public:
    Node(float _x, float _y, float _z);
    void setChildren(/* some params */);

    float x, y, z;
};

example.hpp

Node::Node(float _x, float _y, float _z) {
    x = _x;
    y = _y;
    z = _z;
}

void Node::setChildren(/* some params */) {
    Node child1, child2; // ERROR: how to declare here?

    // do stuff with the parameters...

    child1 = {/*x1, y1, z1*/}; // ERROR: how to initialise?
    child2 = {/*x2, y2, z2*/}; // ERROR: how to initialise?
    children.push_back(child1);
    children.push_back(child2)

我希望有人可以向我解释!我真的在这里迷路了。

谢谢!任何帮助是极大的赞赏。

评论