[英]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.