1

我想使用 std 集合,例如std::vector在我的 xCode 4.5 项目中。按照这里的解释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};
}

错误消息与我上面提到的完全一样。

4

1 回答 1

2

您应该相应地转换类型,因为 C++11 不允许在初始化列表中进行隐式转换,特别是在这种情况下 from floatto 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)};
于 2013-05-22T17:49:30.110 回答