在C ++中使用模板类的模板类

时间:2013-02-22 10:35:51

标签: c++ templates metaprogramming template-classes

我有一个类,它有一个公共的模板化方法。 这个类有两种行为策略,我想通过类模板传递。

template<class Strategy>
class SomeClass {
public:
    template<class B>
    void ProcessType(){}
};

// And do something like this:
SomeClass<Strategy1> sc();
sc.ProcessType<SomeClassType>();
sc.ProcessType<SomeClassType2>();

SomeClass<Strategy2> sc2();
sc2.ProcessType<SomeClassType>();
sc2.ProcessType<SomeClassType2>();

但是这段代码没有编译。我需要像这样保持使用(仅通过策略来操纵)。

1 个答案:

答案 0 :(得分:4)

这是问题所在:

SomeClass<Strategy1> sc();

这是一个名为sc的函数的声明,它不带参数并返回SomeClass<Strategy1>。这通常被称为烦恼的解析(但不是most vexing parse)。你想要的是:

SomeClass<Strategy1> sc;