Класс C++ может включать себя как участника?

Я пытаюсь ускорить стандартную программу Python путем записи этого в C++, затем с помощью него с помощью ctypes или цитоне.

Я являюсь совершенно новым к C++. Я использую Экспресс Microsoft Visual C++, поскольку это свободно.

Я планирую реализовать дерево выражений и метод для оценки его в постфиксном порядке.

Проблема, с которой я сталкиваюсь сразу же:

class Node {
    char *cargo;
    Node left;
    Node right;
};

Я не могу объявить left или right как Node типы.

41
задан Sneftel 12 December 2017 в 20:47
поделиться

2 ответа

Нет, потому что объект будет бесконечно большим (потому что каждый Узел имеет в качестве членов два других объекта Узел , каждый из которых имеет в качестве членов два других объекта Node , каждый из которых ... ну, вы поняли).

Однако вы можете иметь указатель на тип класса как переменную-член:

class Node {
    char *cargo;
    Node* left;   // I'm not a Node; I'm just a pointer to a Node
    Node* right;  // Same here
};
85
ответ дан 27 November 2019 в 00:10
поделиться

Нет, но он может иметь ссылку или указатель на себя:

class Node
{
    Node *pnode;
    Node &rnode;
};
11
ответ дан 27 November 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: