我如何在if语句中声明对象并在我想要的任何地方使用它? [关闭]

问题描述 投票:-4回答:2
if(i == 'y')class objectname();
if(j == 'n')class objectname(something);
objectname.getName();

如何在if中声明对象,并在其他地方使用它?因为如果我喜欢'objectname'在此范围内未声明;谢谢

c++ class
2个回答
5
投票

如何在if [语句]中声明对象。

不是,您不能有条件地声明任何内容。您可能想要创建一个class(或通过接口class控制的class组),其行为取决于您的布尔条件(或在每个class的组中具有class个)的行为取决于一个条件(如果有多个条件)。


2
投票

您可以使用指针

std::unique_ptr<objectname> o;
if(i == 'y')o = std::make_unique<objectname>();
if(j == 'n')o = std::make_unique<objectname>(something);
o->getName();

或lambda

objectname o([&i, &j](){
    if(i == 'y')return objectname();
    if(j == 'n')return objectname(something);
    return objectname();
}());
o.getName();

如果类具有复制/移动构造函数


-3
投票

将其声明为static变量,如下所示:

static MyClass MyObj;

声明为static将延长对象的寿命,直到程序终止。

© www.soinside.com 2019 - 2024. All rights reserved.