【问题标题】:Reference ambiguous to Cocos2d-x Size type对 Cocos2d-x Size 类型的引用模棱两可
【发布时间】:2016-03-31 06:38:33
【问题描述】:

我想在 c++ 项目中实现一些 objective c 调用,即我正在尝试做与“this question”相同的事情(将一些特定文件编译为目标c++)

但后来我遇到了这行代码的“引用模棱两可”错误:

Size visibleSize = Director::getInstance()->getVisibleSize();

说“对‘大小’的引用是模棱两可的

我当前的编译器设置:

C Lang Dialect : GNU99[-std=gnu99]
Compiler Sources As : According to File Type

C++ Language Dialect : GNU++14[-std=gnu99]
C++ Standard Library : libc++ (LLVM C++ standard library with c++11 support)

【问题讨论】:

  • 错误信息告诉你的都是这样吗?
  • 任何后缀为.mm的文件都将被视为Objective-C++。

标签: c++ objective-c cocos2d-x ambiguous


【解决方案1】:

问题在于 Size 类型存在于 Cocos2d-x 和编译器看到的头文件中的其他位置。

幸运的是,所有 Cocos2d-x 都定义在自己的命名空间中,因此您需要在有问题的文件中执行以下操作:

  1. 从实现文件的顶部删除USING_NS_CC
  2. cocos2d::命名空间添加到实现文件中的任意Cocos2d-x类型和类引用中,例如:

    cocos2d::Size visibleSize = cocos2d::Director::getInstance()->getVisibleSize();
    

这会告诉编译器您指的是哪个Size 类型。

据我所知,Cocos2d-x 支持 C++11 但不支持 C++14,因此请在构建设置中进行更改。

【讨论】:

  • 哇!我需要完美的解释。我已经坚持了几天了。谢谢@trojanfoe!
猜你喜欢
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多