我们经常需要定义一个类来表示一个2维或者3维空间中的点,并且类里面的数据类型也是不固定的。下面是我通过一个类来实现上面所有要求的代码实现:
#include<stdio.h>
template<typename T, int count >
class Point
{
public:
T& operator[](int index)
{
return pos[index];
}
private:
T pos[count];
};
void main()
{
Point<float, 4> p1;
p1[0] = 1.0f;
p1[1] = 2.0f;
p1[2] = 3.0f;
p1[3] = 4.0f;
printf("4维空间float类型数据:%f,%f,%f,%f\n", p1[0], p1[1], p1[2], p1[3]);
Point<int,3> p2;
p2[0] = 1;
p2[1] = 2;
p2[2] = 3;
printf("3维空间int类型数据:%d,%d,%d,%d\n", p2[0], p2[1], p2[2]);
}
通过上面的Point的模板类:
当我们需要一个表示2维空间中的类的时候,只需要用Point<float,2>或者Point<int,2>表示就可以。
当我们需要一个表示3维空间中的类的时候,只需要用Point<float,3>或者Point<int,3>表示就可以。
并且类里面的数据类型也是可以任意修改的。