类成员初始化C ++

时间:2017-07-09 16:33:47

标签: c++ class constructor initialization

我想在创建游戏对象时初始化变换变量,但是出了点问题。编译说:

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 :(得分:1)

GameObject类中,您有一个Transform对象Transform transform;,但编译器尚未看到Transform类,因此它不知道它的大小或它甚至是什么。您应该定义Transform然后GameObject而不是GameObject,然后Transform。您可能也想在单个头文件中分离这些类。

旁注: 您也可以GameObject theGameObject;