好吧,伙计们!
我在这里有一个小问题,为了让它更简单,它或多或少是这样的:
窗口.h
template <ObjectType &x>
class foo { stuff }
游戏.h
class gameclass { ObjectType a; }
主文件
gameclass mygame;
foo<mygame.a> fooa;
现在 fooa 失败了,因为它不允许我将 mygame 的成员“a”作为模板参数发送。
现在如何将类成员作为模板参数发送?
谢谢你
您似乎想传递一个非类型模板参数,更具体地说,是一个指向成员的指针。对于您想要的,您必须使用:
template<ObjectType gameclass::* ptr>
struct foo
// ...
请注意,只有当您拥有指向该对象的指针时,才允许您访问该对象的成员。
您可以在此处 (pointer-to-member 作为模板参数)或此处 (pointer-to-members)获得更多详细信息。
请注意,您不能将 的值传递mygame.a给您发布的代码中的模板,因为:
编辑:您已将模板更改为template<ObjectType& x>. 这对于引用 object是正确的。但是,mygame.a不是参考,而是价值。要指定成员,您必须使用语法&mygame::a,这会强制您使用指向成员的指针。