C ++:从模板类继承并带有可能变化的构造函数参数

the_bearded_skull

假设我们有以下示例类:

class A { 
  public:
    explicit A(int foo) { } 

    void test() {
      cout << "I'm in A" << endl;
    }   
};

class B { 
  public:
    explicit B(string bar) { } 

    void test() {
      cout << "I'm in B" << endl;
    }   
};

我想定义一个子类以从可以专门化为A或B之一的模板化类中继承。我面临的问题是A和B具有不同的构造函数参数,因此事实证明构建Child的构造函数是有点烦人。如果我执行以下操作,则一切正常:

template <class ParentClass>
class Child : public ParentClass {
  public:
    Child<B>() : ParentClass("foo") {
    }   
};

int main() {
  Child<B> c;
  c.test();
  return 0;
}

但是,我也想做类似的事情Child<A> c这可能吗?

谢谢!

贾罗德42

您可以专攻每个班级:

template <class ParentClass>
class Child : public ParentClass {
  public:
    Child();
};

template <>
Child<A>::Child() : A(42) {}

template <>
Child<B>::Child() : B("42") {}

演示版

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从C ++中的私有模板类继承构造函数

来自分类Dev

在C ++中的模板实例化中将带有构造函数的类用作类型参数

来自分类Dev

带有参数包的类模板的构造函数给出了 C3520 错误

来自分类Dev

C ++中带有另一个模板类作为参数的构造函数

来自分类Dev

通过可变参数模板的C ++ 11构造函数继承

来自分类Dev

类模板构造函数可以在c ++ 20中具有冗余的模板参数列表吗

来自分类Dev

带有 1 个参数的 C++ 默认模板构造函数

来自分类Dev

带有 std::enable_if 和 std::decay 的 C++ 类构造函数模板

来自分类Dev

C ++模板类:没有构造函数的实例与参数列表匹配

来自分类Dev

C++11 std::vector 的模板类,构造函数中有参数

来自分类Dev

带有指向可变参数函数的函数指针的 C++ 模板化类

来自分类Dev

NUnit C# Generic Class Test Fixtures,在被测类中带有构造函数参数

来自分类Dev

带有构造函数参数的模板类

来自分类Dev

错误:离线构造函数不能具有模板参数C ++

来自分类Dev

C ++模板类“没有合适的默认构造函数”

来自分类Dev

在C ++中访问模板类的私有构造函数

来自分类Dev

没有标准构造函数的类的 C++ 属性模板

来自分类Dev

带有对象指针作为参数的C ++复制构造函数

来自分类Dev

具有默认参数的C ++基类构造函数

来自分类Dev

不带有任意参数的c ++函数模板

来自分类Dev

构造函数模板可以在类模板的c ++ 17参数推导中引起歧义吗

来自分类Dev

如何使用带有 Boost.Python 的 std::map 或 std::vector 参数的构造函数包装 C++ 类?

来自分类Dev

当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?

来自分类Dev

C ++模板构造函数默认参数

来自分类Dev

C ++:使用参数包具有可变类型参数的模板类继承

来自分类Dev

使用带有传入参数的“扩展”的类构造函数继承

来自分类Dev

继承仅具有私有构造函数的C#类

来自分类Dev

创建带有参数C ++的单独的类文件函数

来自分类Dev

继承的类模板的参数化构造函数

Related 相关文章

  1. 1

    从C ++中的私有模板类继承构造函数

  2. 2

    在C ++中的模板实例化中将带有构造函数的类用作类型参数

  3. 3

    带有参数包的类模板的构造函数给出了 C3520 错误

  4. 4

    C ++中带有另一个模板类作为参数的构造函数

  5. 5

    通过可变参数模板的C ++ 11构造函数继承

  6. 6

    类模板构造函数可以在c ++ 20中具有冗余的模板参数列表吗

  7. 7

    带有 1 个参数的 C++ 默认模板构造函数

  8. 8

    带有 std::enable_if 和 std::decay 的 C++ 类构造函数模板

  9. 9

    C ++模板类:没有构造函数的实例与参数列表匹配

  10. 10

    C++11 std::vector 的模板类,构造函数中有参数

  11. 11

    带有指向可变参数函数的函数指针的 C++ 模板化类

  12. 12

    NUnit C# Generic Class Test Fixtures,在被测类中带有构造函数参数

  13. 13

    带有构造函数参数的模板类

  14. 14

    错误:离线构造函数不能具有模板参数C ++

  15. 15

    C ++模板类“没有合适的默认构造函数”

  16. 16

    在C ++中访问模板类的私有构造函数

  17. 17

    没有标准构造函数的类的 C++ 属性模板

  18. 18

    带有对象指针作为参数的C ++复制构造函数

  19. 19

    具有默认参数的C ++基类构造函数

  20. 20

    不带有任意参数的c ++函数模板

  21. 21

    构造函数模板可以在类模板的c ++ 17参数推导中引起歧义吗

  22. 22

    如何使用带有 Boost.Python 的 std::map 或 std::vector 参数的构造函数包装 C++ 类?

  23. 23

    当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?

  24. 24

    C ++模板构造函数默认参数

  25. 25

    C ++:使用参数包具有可变类型参数的模板类继承

  26. 26

    使用带有传入参数的“扩展”的类构造函数继承

  27. 27

    继承仅具有私有构造函数的C#类

  28. 28

    创建带有参数C ++的单独的类文件函数

  29. 29

    继承的类模板的参数化构造函数

热门标签

归档