从C ++中的变量指定模板参数

时间:2011-12-21 09:02:39

标签: c++ templates rtti

我想用变量中运行时可用的数据类型来实例化模板类。例如,考虑这个类:

template <typename T, unsigned int U>
class Allocator
{
public:
    T * pointer;
    Allocator() { pointer = new T[U]; }
    ~Allocator() { delete [] pointer; }
};

现在我想这样使用它:

int main()
{
    string temp = "int";
    unsigned int count = 64;
    Allocator<temp, count> a;
    return 0;
}

有没有办法做到这一点?

我在使用基指针序列化派生类的上下文中遇到了这个问题。我使用RTTI来识别派生类的真实类型,但实际类型的信息存储在字符串中。我的问题是能够从基指针动态广播到类型(在运行时作为字符串提供)。请帮忙。

2 个答案:

答案 0 :(得分:1)

你做不到。必须在编译时知道数据类型。也许使用Boost或工会可能会以非常漂亮的方式解决问题。

祝你好运!

答案 1 :(得分:1)

C ++中缺少反射机制几乎不可能基于具有直接语言支持的数据进行“动态创建”。

唯一的方法是使用“switch”或任何等效的声明机制,例如拥有将声明类型的字符串与创建函数调用相关联的调度映射的工厂类。