是否可以使该代码以某种方式工作? (当前出现编译错误,指出不存在MMVertex2F4B2F)
我不想将2包装在另一个结构中,因为这会影响该类在现有代码中的可用性。
我需要所有这些都在编译时发生,从本质上讲TemplatedClass需要保存有关它的外部类的数据,我以后可以通过创建TemplatedClass的实例来访问这些数据。
struct MMVertex2F4B2F
{
MMPoint vertex;
MMColor4B col;
MMPoint tex;
struct TemplatedClass<offsetof(MMVertex2F4B2F, vertex)> {};
};
问候,
詹姆士
最佳答案
您可以将主类的数据放入子类型:
struct MMVertex2F4B2F
{
struct MMVertexData {
MMPoint vertex;
MMColor4B col;
MMPoint tex;
} Data;
struct TemplatedClass<offsetof(MMVertexData, vertex)> {};
};
(如果您通过成员方法访问数据成员,则只需要使这些成员适应此更改,而不必修改所有代码)
或者,可以将
TemplatedClass<>
声明为与特征模板类似的独立(不是子类型)。您的代码不起作用的事实表明其设计存在缺陷。