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

标签 c++ static constructor

我有这门课:

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 没有默认构造函数。 我还有一堆 Object,我不确定我是否以正确的方式使用静态 Vector3(如果它不会与其他对象的值冲突)。

我怎样才能让它工作?

最佳答案

为 Vector 添加默认构造函数:

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

关于C++ 静态类成员和非默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867001/

相关文章:

java - 是否有一个使用长度以外的参数的数组构造函数?

c++ - 为什么我不能在 C++ 中使用带有转发引用的特征?

c++ - 为什么 Graphics Pipeline 如此特化? (OpenGL)

java - 无法从静态上下文错误中引用非静态方法

java - 音频可以在静态嵌套类中实现吗?

python-2.7 - 使用 super() 的子类构造函数 - 获取未绑定(bind)方法 __init__()

c++ - 连接c/c++和python

c++ - 如何在 C++ 中删除一行?

javascript - 获取类的静态方法

c++ - C++ 中的意外破坏