Je souhaite initialiser la variable de transformation lors de la création de theGameObject, mais quelque chose ne va pas. Compilateur dit:Initialisation de membre de classe C++
C3646 'transform' : unknown override specifier (line 4)
C4430 missing type specifier - int assumed. Note: C++ does not support default-int (line 4)
C3861 'Transform': identifier not found (line 5)
C2614 'GameObject' : illegal member initialization: 'transform' is not a base or member (line 5)
1. class GameObject
2. {
3. public:
4. Transform transform;
5. GameObject() : transform(Transform()) {}
6. };
7.
8. class Transform
9. {
10. public:
11. Vector3 position;
12. Vector3 rotation;
13. Vector3 dimension;
14.
15. Transform()
16. {
17. position = Vector3();
18. rotation = Vector3();
19. dimension = Vector3();
20. }
21. }
Dans main.cpp J'appelle:
GameObject theGameObject = GameObject();
Ce que j'ai fait de mal?
Vous vous rappelez que pour pouvoir utiliser un symbole, il doit être déclaré ou peut-être même défini * avant * de l'utiliser? Essayez donc de changer l'ordre des définitions des deux classes et de voir si cela fonctionne mieux. –
Un [mcve] est toujours une bonne addition à une question ... –
Le problème est que la classe GameObject est déclarée dans GameObject.h et la classe Transform dans Transform.h GameObject.h comme #include "Transform.h", donc Je ne sais pas comment résoudre ce problème – Gugu