对 Cocos2d-x 尺寸类型的引用不明确

Reference ambiguous to Cocos2d-x Size type

我想在 c++ 项目 中实现一些 objective c 调用,即我正在尝试做与“this question"(将某些特定文件编译为 objective c++

但后来我遇到了这行代码的 "Reference ambigious" 错误:

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

说“对'Size'的引用含糊不清

我当前的编译器设置:

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)

问题是 Size 类型存在于 Cocos2d-x 以及编译器发现的头文件中的其他地方。

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

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

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

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

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