【发布时间】:2012-01-24 03:14:15
【问题描述】:
有没有办法在类中存储模板或自动变量而不使类成为模板?我正在尝试存储指向其中一个 STL 随机数生成器的指针,但是如果不将整个类变成模板,我想不出任何方法。这不是一个选项,因为将 cpp 中的所有内容移动到 h 文件会导致大量循环头文件包含我不想处理的内容。例如,它会是这样的:
class tSomeClass
{
public:
template<typename RNG>
tSomeClass(RNG * rng) : fRNG(rng) { }
private:
RNG * fRNG; // How do I get this working???
};
到目前为止,我想出的所有东西总是需要将整个类作为模板,所以我很难过。
编辑:我知道我忘了提一些事情。我不能使用继承来指定 RNG 类型,因为我不知道基是什么,除非有人知道 STL 使用的 RNG 的基类是什么。目前我正在使用 std::default_random_engine。
【问题讨论】:
-
为什么需要一个模板?常规继承不行吗?
-
¤ 您可以简单地存储一个
std::function< double() >。干杯&hth., -
您确定要在 RNG 中存储 ANY 类型吗?你不能以某种方式限制它吗?我的意思是,您要存储指向类的指针、指向原始类型的指针等等吗?
-
不是真正的 any 类型。我应该更具体。我更新了它,所以它更有意义。我真的在努力让它适用于任何 STL RNG,但我不知道它们有什么通用基类(如果有的话),所以我不知道如何让它工作。
标签: c++ class templates member