Pergunta

Esta é provavelmente uma pergunta idiota.Eu estou tentando fazer um texto-lama.Eu preciso de cada Sala de aula para conter outra Sala de classes que pode-se referir ao tentar mover-se para eles ou obter informações a partir deles.No entanto, eu não posso fazer isso, porque eu, obviamente, não pode declarar uma classe dentro de sua definição.Então, como posso fazer isso?Aqui está o que eu quero dizer quando afirmo que eu não posso fazê-lo:

class Room {
    public:
        Room NorthRoom;
        Room EastRoom;
        Room SouthRoom;
        Room WestRoom;
};
Foi útil?

Solução

Não é possível ter um Room variável de membro. Você pode usar um ponteiro ou referência.

class Room {
    public:
        Room* NorthRoom;
        Room* EastRoom;
        Room* SouthRoom;
        Room* WestRoom;
};

Outras dicas

Tenho certeza de que nem todos os quartos têm quatro quartos infantis, certo? Caso contrário, o número de seus quartos é o infinito, que é difícil de manusear na memória finita :-)

Você pode tentar

class Room {
    public:
        Room* NorthRoom;
        Room* EastRoom;
        Room* SouthRoom;
        Room* WestRoom;
};

Então você pode ter dicas nulas quando um quarto não tem filhos.

O seu Room precisa ter ponteiros para outros Rooms (que é, Room*s).

Uma classe do tipo de objeto (como Room) tem um tamanho que é, no mínimo, grande o suficiente para conter todas as suas variáveis de membro (por isso, se você somar os tamanhos de cada uma das suas variáveis de membro, você vai ter o menor tamanho que a classe pode ser.

Se uma classe pode conter variáveis de membros de seu próprio tipo, em seguida, seu tamanho seria infinito (cada Room contém quatro outros Rooms, cada um dos quais contém quatro outros Rooms, cada um dos quais contém...).

C++ não tem tipo de referência de objetos, como Java e C#.

Você deve usar ponteiros:

class Room {
    public:
        Room* NorthRoom;
        Room* EastRoom;
        Room* SouthRoom;
        Room* WestRoom;
};

Provavelmente porque a classe ainda não é seu construtor; portanto, quando você usa ponteiros, você os inicia mais tarde, quando a classe tem a definição de construção.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top