2017-07-09 61 views
0

我想在創建遊戲對象時初始化變換變量,但出了問題。編譯器說:類成員初始化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. } 

在main.cpp中我打電話:

GameObject theGameObject = GameObject(); 

我做了什麼錯?

+1

你確實應該記住,爲了能夠使用一個符號,它必須被聲明,或者甚至可以在你使用它之前定義*。所以試着改變兩個類定義的順序,看看它是否更好。 –

+0

[mcve]總是一個很好的問題... –

+0

問題是GameObject類是在GameObject.h中聲明的,Transform類中的Transform類是#include「Transform.h」中的 GameObject.h我不知道如何解決這個 – Gugu

回答

1

在你GameObject類,你有一個Transform對象Transform transform;但是編譯器還沒有看到Transform類然而,因而它不知道它的大小或者是什麼,甚至是。你應該定義Transform然後GameObject而不是GameObject然後Transform。你可能也想在單獨的頭文件中分離這些類。


旁註: 你可以做GameObject theGameObject;了。