非模板类中任何类型的C++成员变量

Jus*_*n G 3 c++ templates class member

有没有办法在类中存储模板或自动变量而不使类成为模板?我正在尝试存储指向其中一个STL随机数生成器的指针,但是如果不将整个类放入模板中,我无法想出任何方法.这不是一个选项,因为将cpp中的所有内容移动到h文件会导致大量的循环头文件包含我不想处理的内容.所以例如它会是这样的:

class tSomeClass
{
    public:
        template<typename RNG>
        tSomeClass(RNG * rng) : fRNG(rng) { }

    private:
        RNG * fRNG; // How do I get this working???
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我提出的所有内容总是需要将整个课程作为模板,所以我很难过.

编辑:我知道我忘了提一些东西.我不能使用继承来指定RNG类型,因为我不知道基数是什么,除非有人知道STL使用的RNG的基类是什么.目前我正在使用std :: default_random_engine.

bob*_*mcr 5

如果你真的不想要模板我可以想到两个选项:

  • 如果你的字面意思是任何类型,你可以使用void *.这不是非常类型安全的,并且该类的用户必须确切地知道它实际上用它做什么类型.
  • 如果您可以将类型约束到某个基本接口/类,则可以使用指向该类型的指针,例如IRandom *.这似乎在一般情况下更有用/可用.