Uma class c ++ pode se include como um membro?

Eu estou tentando acelerar uma rotina python, escrevendo-o em C ++, em seguida, usando-o usando ctypes ou cython.

Eu sou novo em c ++. Estou usando o Microsoft Visual C ++ Express como é gratuito.

Eu pretendo implementar uma tree de expressão e um método para avaliá-la na ordem pós-fixada.

O problema que me deparo agora é:

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

Não posso declarar left ou right como tipos de Node .

Não, porque o object seria infinitamente grande (porque todo Node tem como membros dois outros objects Node , cada um tendo como membros dois outros objects Node , que cada … bem, você entendeu o ponto).

Você pode, no entanto, ter um ponteiro para o tipo de class como uma variável de membro:

 class Node { char *cargo; Node* left; // I'm not a Node; I'm just a pointer to a Node Node* right; // Same here }; 

Apenas para completar, observe que uma class pode conter uma instância estática de si mesma:

 class A { static A a; }; 

Isso ocorre porque os membros estáticos não são realmente armazenados nas instâncias da class, portanto, não há recursion.

Não, mas pode ter uma referência ou um ponteiro para si mesmo:

 class Node { Node *pnode; Node &rnode; };