c++静态类成员和非默认构造函数

C++ Static Class Member and Non-default Constructor

本文关键字:默认 构造函数 静态类 成员 c++      更新时间:2023-10-16

我有这样一个类:

class Object
{
    public:
    private:
        float _positionX, _positionY, _positionZ;
}

我需要做检查和做一些数学每次新值被分配给他们,我也在不同的地方使用这些值。我正在寻找一种更简单的方法来分配和检查值,而不是使用这些方法:

class Object
{
    public:
        float GetPositionX();
        void SetPositionX(float value);
        //etc
    private:
        float _positionX, _positionY, _positionZ;
}

所以我试着这样做:

static class Vector3
{
    public:
        Vector3(float *valueX, float *valueY, float *valueZ)
        {
            _valueX = valueX;
            _valueY = valueY;
            _valueZ = valueZ;
        }
    private:
        float *_valueX, *_valueY, *_valueZ;
}
class Object
{
    public:
        Vector3 Position;
        //Position = Vector3(&_positionX, &_positionY, &_positionZ);
    private:
        float _positionX, _positionY, _positionZ;
}

这样我就可以在代码的其他地方这样调用它了:

Object *myObj = new Object();
myObj->Position.x = 1; //assign, checks are done here
float myValue = myObj->Position.x; //receive, no checks needed

但是编译器抱怨Vector3没有默认构造函数。我也有一堆对象,我不确定我是否使用静态Vector3正确的方式(如果它不会与其他对象的值冲突)。

我怎样才能使它工作?

为Vector添加默认构造函数:

Vector3()
{
   _valueX = NULL;
   _valueY = NULL;
   _valueZ = NULL;
}