c++ - 根据条件将一个对象声明为多个类
问题描述
这个问题基于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
. 我该怎么做呢?
解决方案
std::variant
如果您的对象在运行时不必是“多态的”,您可能不需要。将您的代码重构为:
if (...) {
DoSomething(Class1());
if (...) {
DoSomething(Class1(a, b));
else
DoSomething(Class2());
并制作DoSomething
模板或重载集:
void DoSomething(const Class1&) { }
void DoSomething(const Class2&) { }
推荐阅读
- python - O365 在 Python 中发送电子邮件附件
- php - 如何在 MySql 查询中使用日期范围选择数据?
- java - 无法登录sqldeveloper
- sas - SAS 列名替换方案
- java - Firebase 云函数更改超时
- javascript - 你能创建一个只有一个位置的数组吗?
- google-analytics - Google Analytics Reporting API - ga:mobileDeviceInfo 维度
- javascript - Angular http 请求将端口 4200 添加到我的每个请求
- python - 在 Numpy 和 Dask 中并行化 For 循环以创建多维直方图
- mysql - 在 MySQL Case Operator 的结果上添加一些文本