2013-07-13 42 views
1

在某人的项目中,我发现了一个错误。我知道这是错误的。但它运作良好。在xcode“.mm”文件中设置一个C++类nil。

在.mm文件

做这样

- (void) DestroySelfBody{ 
    [self unschedule:@selector(DestroySelfBody)]; 
    if (m_body) { 
     m_body->GetWorld()->DestroyBody(m_body); 
     m_body = nil; 
    } 
} 

m_body是由定义(b2Body是一个C++类):

b2Body * m_body; 

回答

0

使用nullptr为C++类型:m_body = nullptr;

+0

你的意思是:m_body = NULL; nullptr没有被定义。 – zszen

+0

现在我想知道为什么设置m_body = nil不显示错误并且运行良好。 – zszen

+0

@zszen'nullptr'是C++ 11(此功能可用在铛一段时间)。如果你必须使用旧版本的C++,那么NULL将是一个很好的替代品。有一些基本的等价性 - 事实上,在最近的系统头文件中,'nil'和'Nil'被定义为'nullptr'。尽管存在这种基本的等价性,但人们仍然将'nil'与objc对象关联起来,而不是C++类型。 – justin

相关问题