如果您的Vector
对象可能具有无效状态,则可以使用以下方法:
class Vector
{
public:
int x, y, z;
bool valid;
Vector() : x(0), y(0), z(0), valid(false) {}
Vector(int x, int y, int z) : x(x), y(y), z(z), valid(true) {}
};
然后你的Camera
课:
class Camera
{
public:
Camera(const Vector &pos, const Vector &lookAt, const Vector &upDir)
{
if (!lookAt.valid) {...}
}
};
用法:
Camera c(Vector(1,2,3), Vector(), Vector());
您可以为默认值定义一个静态实例:
class Vector
{
public:
static Vector INVALID;
private: Vector(); // make invalid constructor private
};
Vector Vector::IVALID;
用法:
Camera c(Vector(123), Vector::INVALID, Vector(12,4,5));