coord.h

来自「《3D游戏引擎设计》的源码」· C头文件 代码 · 共 80 行

H
80
字号
#ifndef COORD_H
#define COORD_H

#include <stdarg.h>
#include <iostream.h>

class mgcCoordinate
{
public:
	// constructors and destructor
	mgcCoordinate (int _dimensions=0, const int* initial=0);
	mgcCoordinate (int _dimensions, int initial_all);
	mgcCoordinate (int _dimensions, int initial0, int initial1, ...);
	mgcCoordinate (const mgcCoordinate& coordinate);
	~mgcCoordinate ()
		{ delete[] component; }

	// data access
	int Dimensions () const
		{ return dimensions; }
	int* Components () const
		{ return component; }
	int& operator[] (int d) const;

	// assignments
	mgcCoordinate& operator= (const mgcCoordinate& coordinate);
	mgcCoordinate& operator= (int value);

	// comparisons
	int operator== (const mgcCoordinate& coordinate) const;
	int operator!= (const mgcCoordinate& coordinate) const
		{ return !(*this == coordinate); }
	int operator< (const mgcCoordinate& coordinate) const;
	int operator<= (const mgcCoordinate& coordinate) const;
	int operator> (const mgcCoordinate& coordinate) const;
	int operator>= (const mgcCoordinate& coordinate) const;

	// arithmetic updates
	mgcCoordinate& operator+= (const mgcCoordinate& coordinate);
	mgcCoordinate& operator-= (const mgcCoordinate& coordinate);
	mgcCoordinate& operator+= (int value);
	mgcCoordinate& operator-= (int value);
	mgcCoordinate& operator*= (int value);
	mgcCoordinate& operator/= (int value);

	// arithmetic operations
	mgcCoordinate operator+ (const mgcCoordinate& coordinate);
	mgcCoordinate operator- (const mgcCoordinate& coordinate);
	mgcCoordinate operator+ (int value);
	mgcCoordinate operator- (int value);
	mgcCoordinate operator* (int value);
	mgcCoordinate operator/ (int value);
	mgcCoordinate operator- ();
	friend mgcCoordinate operator* (int value, mgcCoordinate& coordinate);

	friend ostream& operator<< (ostream& ostr, const mgcCoordinate&);

private:
	int dimensions;
	int* component;

	void Create (int _dimensions, const int* initial);

// error handling
public:
	static int verbose;
	static unsigned error;
	static void Report (ostream& ostr);
private:
	static const unsigned allocation_failed;
	static const unsigned zero_dimension;
	static const unsigned invalid_dimension;
	static const unsigned incompatible_dimensions;
	static const char* message[4];
	static int Number (unsigned single_error);
	static void Report (unsigned single_error);
};

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?