4

我认为这在 C++ 中是不可能的,我必须有哪些选项来模拟这种行为?

4

3 回答 3

11

用作std::is_base_of

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

您也可以在功能模板中进行相同的操作。

于 2012-12-06T18:29:33.733 回答
6

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

于 2012-12-06T18:29:55.007 回答
3

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

于 2012-12-06T18:30:51.327 回答