【发布时间】:2016-04-20 12:38:06
【问题描述】:
我创建了一个 C++ 模板,定义了不同的数据类型 2D 点,作为在 OpenGL 程序中重新学习 C++ 的任务。
template <typename T>
class Point2D {
public:
Point2D(const T& x, const T& y) {
_data[0] = x;
_data[1] = y;
}
const T & x() { return _data[0]; }
const T & y() { return _data[1]; }
private:
T _data[2];
};
我可以创建 Point2D 的多个命名实例并存储值并使用它们来绘制基本形状
Point2D <GLdouble> c0( 0.5, 0.5);
Point2D <GLdouble> c1(-0.5, 0.5);
然后画一个喜欢我访问点中的值。
glBegin(GL_LINES);
glVertex2d(c0.x(), c0.y());
glVertex2d(c1.x(), c1.y());
glEnd();
但是,我想创建一个相同模板类型(例如双精度)的 Points2D 对象数组来表示形状。
如何创建模板化 Point2D 数组并表示更复杂的对象,我可以在 for loop 模板化对象数组中绘制这些对象。
glBegin(GL_POLYGON);
for (k = 0; k < 4; k++) {
glVertex2d( ????? [i].x(), ????? [i].x());
}
glEnd();
有人可以建议我这样做的方法吗?
谢谢
斯图尔特
【问题讨论】:
-
Point2D<GLDouble> points[20]; /* ... */ points[1] = foobar();?