编译时检查基类是否为"接口"

Vad*_* S. 6 c++ compilation

事实证明,我原本想要的可能不可能不涉及C++ 11我想稍微改变一下要求并问你是否可以实现这一点.

上一个问题

基本上我想在一个类继承自"interface"时检查编译时间.通过接口我的意思是仅使用纯虚方法的类.我想做以下代码:

template <typename T>
class Impl : public T {
public:
STATIC_ASSERT_INTERFACE(T);
};
Run Code Online (Sandbox Code Playgroud)

这里的行为是,如果T只有纯虚方法,那么它将编译,如果其中一个方法不是那么失败.

任何人都可以想到这样的事情吗?

iam*_*ind 2

这与Java接口基本类似。在 C++ 中,不存在interface这样的情况,它只是用于class所有纯虚拟方法且仅static const包含数据成员的术语。

此外,纯虚方法可能有也可能没有函数体。因此C++的纯虚方法与Java的抽象方法并不完全相同。

不幸的是,你所问的问题无法在 C++ 中模拟。