0

我尝试从 CCDictionary allKeys() 方法中获取 std 字符串键,但是当我尝试从 CCArray 中获取键时,我得到了堆栈,这就是我所拥有的:

CCArray* pAllkeys = CCArray::create();
pAllkeys->addObjectsFromArray(GameSingleTone::getInstance()->getGemsDictionary()->allKeys());
pAllkeys->retain();

在这里我尝试获取密钥,但我得到编译错误:

int gemsToRemoveCount = pAllkeys ->count();
for(int i=0;i<gemsToRemoveCount;i++)
{

    std::string gemKey =  pAllkeys->objectAtIndex(i);
}

这是我得到的编译错误:4

IntelliSense: no suitable constructor exists to convert from "cocos2d::CCObject *" to "std::basic_string<char, std::char_traits<char>, std::allocator<char>>"   


挖掘标题后 更新找到了解决方案

CCString* name = dynamic_cast<CCString*>(pAllkeys->objectAtIndex(i));
std::string newkey = name->m_sString;   
4

1 回答 1

0

CCArray 是一个只能包含 CCObject 类的容器。通过添加 std::string 对象,您违反了这一点,但这真的不是您的错 - CCArray 类应该在添加时进行类型检查并在那时失败。

现在它报告错误,因为objectAtIndex返回 aCCObject*但您假设它包含并返回 type 的对象std::string

解决方案:使用 astd::vector<std::string>而不是 CCArray 来存储字符串。

于 2013-09-21T12:02:34.603 回答