C ++使用'这个'作为非类型模板参数不允许

时间:2017-05-18 19:31:38

标签: c++

我有两个班级,BlockTypeBlockInstanceBlockInstanceBlockType &作为模板参数。我不是完全熟悉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;
};

1 个答案:

答案 0 :(得分:2)

这是对模板的不当使用,这些模板用于(有效)代码生成,基于编译程序时已知的数量。

this是一个只有在运行时才知道的值的指针。

这里很难提出具体建议,因为你没有解释你想要做什么。但似乎您只想将指针作为普通函数参数传递。