[英]Accessing an object from a vector of object pointers
这是我遇到麻烦的一点代码:
int pressedKey = event.getNativeKeyCode();
for (int i=0; i <= AllTriggerPads.size() ;i++) {
if (AllTriggerPads[i]->get_key() == pressedKey){
AllTriggerPads[i]->mBufferPlayerNode->start();
}
}
get_key()
收到EXC_BAD_ACCESS (Code=1, ...)
错误。
我似乎有一个参考问题。 我在mouseDown和fileDrop函数中使用几乎相同的代码:
for (int i=0; i < AllTriggerPads.size() ; i++) {
if (AllTriggerPads[i]->mRect.contains(event.getPos())) {
AllTriggerPads[i]->mBufferPlayerNode->start();
}
}
这样很好!
太好了,我想我没有正确使用(obj指针的)AllTriggerPads向量。 所以我可以使用AllTriggerPads[i]->mRect.contains(event.getPos())
但我不能使用AllTriggerPads[i]->get_key()
。 我无法通过AllTriggerPads[i]->key
访问值本身,而我已经使用AllTriggerPads.at(i)
尝试过它,但是随后出现了超出范围的错误,这使我感到更加疑惑。
AlltriggerPads用vector<TriggerPad*> AllTriggerPads;
初始化vector<TriggerPad*> AllTriggerPads;
那么我该如何访问关键成员?
您遇到一个错误的错误。
for (int i=0; i <= AllTriggerPads.size() ;i++)
用。。。来代替
for (int i=0; i < AllTriggerPads.size(); ++i)
(++无关紧要,始终使用预增量只是更好的做法)
您正在尝试访问不存在的数组元素。 这就是为什么它抛出EXC_BAD_ACCESS
的原因。 将for循环条件更改为
for (int i = 0; i < AllTriggerPads.size(); ++i) {
if (AllTriggerPads[i]->get_key() == pressedKey) {
AllTriggerPads[i]->mBufferPlayerNode->start();
}
}
或者如果启用了C++11
支持,则将其简化为
for (auto i : AllTriggerPads) {
if (i->get_key() == pressedKey) {
i->mBufferPlayerNode->start();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.