如何强制使用的模板参数在C ++中实现某些接口?

时间:2012-12-06 18:26:20

标签: c++ templates interface

我不认为这在C ++中是可行的,我有什么选择来模拟行为?

3 个答案:

答案 0 :(得分:11)

std::is_base_of用作:

template<typename T>
class A
{
    static_assert(std::is_base_of<IMyInterface, T>::value, 
                  "T must derive from IMyInterface");
};

你也可以在功能模板中使用它。

答案 1 :(得分:6)

您可以使用std::is_base_of<YourInterface, YourParameter>,如果结果为false则会出错。记住这是C ++ 11。

答案 2 :(得分:3)

某些多态接口还是某些静态接口? 后者可以通过Boost Concepts进行检查。