if子句下的声明,c ++

时间:2015-07-29 09:57:04

标签: c++ object

我想在满足某些条件时创建一个A类实例。例如,在下面的代码中,在函数B :: fun()中,如果x == true,我想创建一个A类对象。但是如果我定义类型1中所示的方法,则编译器会声明“a”未声明。 我们可以通过定义类型2中所示的方法来避免错误。但是在这种情况下,我们将最终创建一个不使用的A实例。

请建议处理这种情况的任何好方法

class A {};

Type 1:
B::fun() {
 if (x == true)
       A a; 
}


Type 2 :
B::fun() {
     A a;  
}

2 个答案:

答案 0 :(得分:1)

如果A仅在xtrue时使用,则在相同的if块中使用它。

void foo()
{
   if (x == true) {
      A a;
      // use a now
   }
}

如果由于某种原因无法做到这一点,那么你必须要么:

  • 将其声明在if之外,如第二个示例所示,并且可能未使用它;或
  • 使用动态分配。

答案 1 :(得分:0)

对象a只能在if块内访问。 要在外面使用它,你可以采用第二种方法。