0

我想在另一个块中使用 C++ 类对象(在一个块中声明)。有可能这样做吗?让我举一个更具体的例子:

我有一个用户定义的函数 myfunc:

void myfunc()
{
   // ...
   if(condition is true)
   {
      myclass *ptr = NULL;
      ptr = new myclass // myclass is define somewhere else. Here I am creating an instance of it
   }

   if(another condition is true)
   {
       ptr = dosomething
   }

} // end of myfunc

我可以在第二个 if 块中使用 ptr 吗?

4

2 回答 2

5

如果您在块ptr外声明,则可以:if

void myfunc()
{
   myclass *ptr = NULL;  // <= Declaration of ptr outside the block
   // ...
   if(condition is true)
   {
      ptr = new myclass    // myclass is define somewhere else. Here I am creating an instance of it
   }

   if(another condition is true)
   {
       ptr = dosomething
   }

} // end of myfunc

另外,我建议您使用智能指针

于 2013-09-25T15:08:52.090 回答
1

你可以。在第一个 if 块之外声明 ptr ,它将在第二个中可见。

void myfunc()
{
   // ...
   myclass *ptr = NULL; // <-- moved here, it is visible within scope of myfunc
   if(condition is true)
   {
       ptr = new myclass;   
   }

   if(another condition is true)
   {
       ptr = dosomething
   }

} // end of myfunc
于 2013-09-25T15:06:09.020 回答