C 如何仅实现多个继承类的一个构造函数

C++ How to implement only one constructor of a multiple inheritance class

本文关键字:构造函数 一个 继承 何仅 实现      更新时间:2023-10-16

我在下面有类:

enum class Kind {
  Monday,
  Tuesday,
};
class Day {
 public:
  Day(Kind kind) : kind_(kind) {}
 private:
  Kind kind_;
};
class Tuesday : public Day, public std::vector<int> {
 public:
  Tuesday(...) : std::vector<int>(...), Day(Kind::Tuesday) {}
};

您可以看到,即使是从一天开始继承的星期二类,也称为Day(Kind::Tuesday),因此Tuesday的构造函数应与std::vector<int>

相同

但是,即使是构造函数的形式相同,我都必须重写所有构造函数以匹配std::vector<int>的构造函数,然后将Day(Kind::Tuesday)附加到每个构造函数的末端。

我想要的就是将Tuesday用作向量。所以我很好奇是否有一种简单的方法?

您可以使用variadic模板构造函数:

template <typename... Types>
Tuesday(Types... args) : std::vector<int>(args...), Day(Kind::Tuesday) {}
相关文章: