首页 > 解决方案 > 根据条件将一个对象声明为多个类

问题描述

这个问题基于Create objects in conditional c++ statements

但是,在我的情况下,我需要从多个类的选择中声明一个对象,然后将其作为参数传递给函数。因此,必须使用预定义的名称(在这种情况下为obj )声明对象。

Class1 obj;
Class2 obj;

if (...) {
  obj = Class1(); }
if (...) {
  obj = Class1(a, b); }
else
  obj = Class2();

// Do something on declared object
DoSomething(obj.variable_);

目前,由于obj. 我该怎么做呢?

标签: c++

解决方案


std::variant如果您的对象在运行时不必是“多态的”,您可能不需要。将您的代码重构为:

if (...) {
  DoSomething(Class1());
if (...) {
  DoSomething(Class1(a, b));
else
  DoSomething(Class2());

并制作DoSomething模板或重载集:

void DoSomething(const Class1&) { }
void DoSomething(const Class2&) { }

推荐阅读