我有这堂课:
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(如果它不会与其他对象的值冲突)。
我怎样才能使这个工作?
答案 0 :(得分:1)
向Vector:
添加默认构造函数Vector3()
{
_valueX = NULL;
_valueY = NULL;
_valueZ = NULL;
}