c++ - 如何测试B类是否派生自A类?

标签 c++ templates inheritance

更具体地说,假设我有一个带有参数 AB 的类模板,并且我希望有一个编译器错误(当模板被实例化时)如果 B 不是从 A 派生的。

template<class A, class B>
class Foo
{
    // static_assert(B is derived from A)
};

最佳答案

这已经被问过很多次了,但是很简单我会再次发布解决方案:

~Foo()
{
    A* p = (B*)0; // B is required to be a subtype of A
}

关于c++ - 如何测试B类是否派生自A类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4532281/

相关文章:

c++ - 如何在游戏中实现碰撞效果?

templates - 如何显示城市和邮政编码?

c++ - 将模板化函数限制为基本类型和派生类型?

java - Spring data couchbase文档java类继承

c++ - 继续收到 "no member function declared"错误,即使它已声明和定义

c++ - 类名没有命名模板继承的类型问题

c++ - CMake向目标添加头文件

ruby-on-rails - Rails 3 模型子类让我发疯!请帮助更正 urls/params 哈希

用于 HTTP 请求的 C++ 库 - XML、JSON、CSV

c++ - 模板参数推导失败