У меня есть этот класс:C++ Статического класса член и конструктор не по умолчанию
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 не имеет конструктор по умолчанию. У меня также есть пучок Объект, и я не уверен, правильно ли я использую статический вектор3 (если он не будет конфликтовать с другими значениями объекта).
Как я могу заставить это работать?
Ваш компилятор не жалуется на отсутствие запятой или пытается сделать статический класс (с конструктором еще)? – chris
Согласно [здесь] (http://stackoverflow.com/questions/9321/how-do-you-create-a-static-class-in-c) в C++ нет классов 'static'. –
@ LuchianGrigore - Согласно этому сообщению (http://stackoverflow.com/questions/1635068/can-a-class-be-declared-static-in-c) 'static class' недействителен –