C ++中类成员的模板实例化

时间:2015-02-22 23:26:46

标签: c++ templates

我正在尝试创建一个数据对象(类或结构),其中包含用于实例化模板类的编译时已知值。也许这在以下示例中变得更加清晰:

class S
{
public:
    const int j;
    ... constructor
    // Must contain member to later instantiate templates.
    // Defining these members must be forced
    // Defined at compile time
}

template<int I>
class C {...}

int main(){
    S s(10);
    S s2(20);
    // now create some class from the field in s
    C<s.j>  c(...)
    C<s2.j> c2(...)
}

这只有在成员j是静态时才有效,对吗?但是,我想创建定义S的多个实例的可能性,以使用此类类型。如果我使j静态,则所有实例只有一个可能的值。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

执行此操作的唯一方法是使S中的j依赖于模板参数。

template<int I>
class S {
public:
    static const int j = I;

...
}

您不能将运行时值(类成员)作为模板参数传递。