是否可以使该代码以某种方式工作? (当前出现编译错误,指出不存在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<>声明为与特征模板类似的独立(不是子类型)。

您的代码不起作用的事实表明其设计存在缺陷。

07-24 09:45
查看更多