Estoy haciendo un juego y tengo una clase llamada Man
y una clase llamada Block
en su código, ambas se necesitan mutuamente, pero están en archivos separados. ¿Hay alguna manera de "predefinir" una clase? ¿Como la macro de clase @ de Objective-C?C++: dos clases que se necesitan
Respuesta
Se llama dependencia circular. En la clase Two.h
class One;
class Two {
public:
One* oneRef;
};
Y en la clase One.h
class Two;
class One {
public:
Two* twoRef;
};
La "clase Uno;" y "clase dos"; las directivas asignan los nombres de clase "Uno" y "Dos" respectivamente; pero no definen ningún otro detalle más allá del nombre. Por lo tanto, puede crear punteros de la clase, pero no se puede incluir toda la clase de este modo:
class One;
class Two : public One {
};
class Three {
public:
One one;
};
La razón de los dos ejemplos anteriores no compilar es porque mientras que el compilador sabe que hay una clase Uno, que doesn' t saber qué campos, métodos o métodos virtuales, la clase Uno podría contener porque solo se había definido el nombre, no la definición de clase real.
Sí.
class Man;
Esta declarará Man
como un "tipo incompleto". Puede declarar punteros o referencias a él y algunas otras cosas, pero no puede crear una instancia o acceder a miembros de ella. Esta no es una descripción completa de lo que puede y no puede hacer con un tipo incompleto, pero es la idea general.
Es importante tener en cuenta que puede continuar e incluir el tipo completo más adelante y obtener acceso. Puede usar tipos incompletos en el encabezado y luego incluir la definición completa del encabezado en el cpp para usarlo. –
- 1. C#: ¿Las clases abstractas necesitan implementar interfaces?
- 2. Dos clases que se refieren entre sí
- 3. Compilación de C++ cuando dos clases se refieren entre sí
- 4. C++, dos clases con necesidades mutuas
- 5. ¿Cuál es un buen patrón de diseño en C# para las clases que necesitan hacer referencia a otras clases?
- 6. ¿Por qué se necesitan "clases anotadas" si hay @Entidad?
- 7. C++: ¿funciones virtuales que necesitan llamar al mismo código?
- 8. ¿Cuándo se necesitan las interfaces?
- 9. heredan de dos clases en C#
- 10. ¿Cómo crear dos clases en C++ que se usen como datos?
- 11. ¿Cómo puedo tener referencias entre dos clases en Objective-C?
- 12. Las clases internas estáticas necesitan importación para las anotaciones
- 13. MSDTC: cuántos puertos se necesitan
- 14. ¿Se necesitan mutexes en javascript?
- 15. ASP.NET MVC 3 Tutoriales que se necesitan desesperadamente
- 16. Haciendo que las clases Objective-C se vean hermosas
- 17. ¿Se necesitan tanto tokens csrf como captcha?
- 18. ¿Pueden dos clases hacerse amigos?
- 19. ¿Las clases se oponen en Objective-C?
- 20. iPhone KVO entre dos clases
- 21. ¿Pueden dos clases verse unas a otras usando C++?
- 22. ¿Por qué variables estáticas necesitan ser declarados dos veces en C++
- 23. Python: se necesitan importaciones circulares para la verificación de tipos
- 24. condicional de PHP, se necesitan corchetes?
- 25. Se necesitan consejos de Wordpress XMLRPC
- 26. ¿Se necesitan realmente scala.util.automata, scala.util.regexp y scala.util.grammar?
- 27. ¿Cómo se refactorizan dos clases con los mismos eventos duplicados?
- 28. Selector de CSS que se aplica a elementos con dos clases
- 29. ¿Cómo compartir una variable entre dos clases?
- 30. Comprueba si el elemento tiene dos clases
Parece que lo que quieres es una declaración directa. – mooware
+1 para BlockDude. –