我想在我的 xCode 4.5 项目中使用 std 集合,例如 std::vector
。按照这里的解释 no type named 'shared_ptr' in namespace 'std'我相应地更改了我的编译器选项,但是现在当我开始构建项目时,我得到了一堆错误,例如 Type float cannot be narrowed to GLubyte (aka unsigned char) in initializer list
。
这些错误在 ccType.h 中,它是我在游戏中使用的 Cocos2d 库的一部分。
我认为正确的做法不是开始调试 Cocos2d,而是更改一些编译器选项。
我应该如何进行?
这是导致错误的代码:
static inline ccColor4B ccc4BFromccc4F(ccColor4F c) {
return (ccColor4B){c.r*255.f, c.g*255.f, c.b*255.f, c.a*255.f};
}
错误消息与我在上面带来的完全一样。
最佳答案
您应该相应地转换类型,因为 C++11 不允许在初始化列表中进行隐式转换,特别是在这种情况下,从 float
到 unsigned char
。
我想这应该足以解决问题:
return (ccColor4B){static_cast<GLubyte>(c.r*255.f), static_cast<GLubyte>(c.g*255.f), static_cast<GLubyte>(c.b*255.f), static_cast<GLubyte>(c.a*255.f)};
关于用于 xCode 错误的 C++11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16698090/