if(i == 'y')class objectname();
if(j == 'n')class objectname(something);
objectname.getName();
如何在if中声明对象,并在其他地方使用它?因为如果我喜欢'objectname'在此范围内未声明;谢谢
如何在if [语句]中声明对象。
不是,您不能有条件地声明任何内容。您可能想要创建一个class
(或通过接口class
控制的class
组),其行为取决于您的布尔条件(或在每个class
的组中具有class
个)的行为取决于一个条件(如果有多个条件)。
您可以使用指针
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();
如果类具有复制/移动构造函数
将其声明为static
变量,如下所示:
static MyClass MyObj;
声明为static
将延长对象的寿命,直到程序终止。