【发布时间】:2011-03-06 08:58:06
【问题描述】:
我正试图在 C++ 领域找到自己的方式,但现在越来越困惑。玩具应用程序是一个非常基本的 OpenGL 引擎。 所以这是(我猜很简单)问题: 我想处理不同顶点数据的网格,所以我有例如
struct Vertex
{
Vector3f position;
}
struct VertexN : public Vertex
{
Vector3f normal;
}
现在我需要一个 Mesh 类来保存数据并进行绘制。 我尝试过这样的事情:
template<class T>
class Mesh
{
public:
Mesh();
~Mesh();
void load(const T * vertices, int num);
void draw();
protected:
T * vertices_;
};
不同的顶点必须以不同的方式加载和绘制,这可以通过模板专业化来完成。
我的问题是我喜欢拥有另一个包含 Mesh 对象实例的类,但显然不允许使用模板化的类成员。
我能想到的另一个解决方案是在 Mesh 中保存指向基本结构 Vertex 的指针,传递所用 Vertex 类型的标识符,然后在 load() 和 draw() 中使用 switch 语句以允许不同的实现。
最好的方法是什么?
非常感谢任何帮助。
【问题讨论】:
标签: c++