特定基类的 C++ 类模板

标签 c++ generics inheritance templates

假设我有类(class):

class Base{};

class A: public Base{
    int i;
};

class B:public Base{
    bool b;
};

现在我想定义一个模板类:

template < typename T1, typename T2 >
class BasePair{
    T1 first;
    T2 second;
};

但我想将其定义为只有 Base 类的后代可以用作模板参数。

我该怎么做?

最佳答案

C++11 引入 <type_traits>

template <typename T1, typename T2>
class BasePair{
static_assert(std::is_base_of<Base, T1>::value, "T1 must derive from Base");
static_assert(std::is_base_of<Base, T2>::value, "T2 must derive from Base");

    T1 first;
    T2 second;
};

关于特定基类的 C++ 类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012950/

相关文章:

c++ - 输出所有可变模板参数

java - 请为这段 Java 泛型代码建议帮助方法

java - 反射问题,将数据库映射到对象java-android

c# - 从基本类型列表中返回正确的后代类型

c++ - 获取 vector<float> 中 k 个最大值的索引的有效方法

c++ - 聚合初始值设定项中的多余元素

c++ - 根据命令行输入返回仿函数

json - Scala Play - 如何格式化泛型以进行 JSON 转换

python - 在Python中,无需重写父类即可更改继承行为

c# - 为什么我们要引用其他项目?