c++ - 检查初始化列表中的空 vector

标签 c++ inheritance vector initialization

我想通过第一项形成包含基类的 vector 来初始化基类,例如:

struct Base { ... };

struct Derived : public Base
{
   Derived(const Base& baseClass)
      : Base(baseClass)
   {
   }
   Derived(const std::vector<Base*>& listOfBaseClass)
      : Base(*(listOfBaseClass[0]))
   {
   }
};

listOfBaseClass vector 为空时,此解决方案失败。如何才能防止这种情况。这是简化的例子,所以 像这样调用基类构造函数:

std::vector<Base> baseClasses;

if(!baseClasses.empty())
{
  Derived myDerived(baseClasses[0]);
}

这不是我的问题的解决方案。提前致谢。

最佳答案

如果列表为空则抛出异常:

 : Base(listOfBaseClass.empty() 
          ? throw std::invalid_argument("Missing base class")
          : *(listOfBaseClass[0])
        )

请求的非异常变体:

 : Base(( (listOfBaseClass.empty() && exit(0)),
          *(listOfBaseClass[0])
       ))

关于c++ - 检查初始化列表中的空 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007403/

相关文章:

c++ - 使用 clang++ 和 SDL 包含路径

Python - 初始化父类

r - 如何从向量中提取数字的倍数

php - eps 图像(来自 inkscape)未显示在 tcpdf 中

c++ - 在 Visual Studio 2010 中链接 libavformat

c++ - 为什么在离开作用域时指向字符串文字的外部指针会丢失? (C++)

c++ - 如何在 switch 语句中正确初始化不同的派生类?

c++ - 基访问派生的 friend

c++ - 无法将 unique_ptr<Basic> 设置为 p(new Basic())

c++ - 我怎样才能解决破坏对象的逻辑错误?