我有两个班级,BlockType
和BlockInstance
。 BlockInstance
将BlockType &
作为模板参数。我不是完全熟悉C ++,并且想知道在定义返回BlockType
类型的函数时,为什么我不能将其作为BlockInstance
内的模板参数传递。
代码:
class BlockType;
template <BlockType & blockType>
class BlockInstance;
class BlockType{
public:
virtual BlockInstance<this> & createInstance(block_pos pos) = 0;
virtual void render(BlockInstance<this> & blockInstance) = 0;
};
template <BlockType & blockType>
class BlockInstance{
public:
block_pos && pos;
BlockInstance(block_pos & pos);
virtual void onClientUpdate() = 0;
};
答案 0 :(得分:2)
这是对模板的不当使用,这些模板用于(有效)代码生成,基于编译程序时已知的数量。
this
是一个只有在运行时才知道的值的指针。
这里很难提出具体建议,因为你没有解释你想要做什么。但似乎您只想将指针作为普通函数参数传递。