用于 xCode 错误的 C++11

标签 c++ xcode c++11 cocos2d-iphone std

我想在我的 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 不允许在初始化列表中进行隐式转换,特别是在这种情况下,从 floatunsigned 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/

相关文章:

c++ - -fprofile-use 和 -fauto-profile 有什么区别?

ios - 如何在xcode中提交时触发自动缩进

ios - 在 Xcode 调试中观察变量或检查对象的技巧

c++ - 当映射包含字符串 vector 作为值时从值中获取键的有效方法

c++ - 模板函数将可变数量的元组元素作为参数绑定(bind)到另一个函数

C++模板题

c++ - 为类的数据成员声明范围

iphone - 将 App Store 的图标(所有应用程序都需要)添加到 Xcode

c++ - 无锁原子循环队列无法正常工作

C++ 名称查找 - 标准中的示例