从对象指针向量访问对象
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();
}
}
这工作正常!
所以,我想我没有正确使用AllTriggerPad向量(obj指针(。所以我可以使用AllTriggerPads[i]->mRect.contains(event.getPos())
但我不能使用AllTriggerPads[i]->get_key()
.我可以通过AllTriggerPads[i]->key
来访问值本身 我已经用AllTriggerPads.at(i)
试过了,但后来我得到了一个超出范围的错误,这让我更加想知道。
所有触发板初始化为 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();
}
}
相关文章:
- 按基类对象访问派生类资源时出错
- 使用基类对象访问派生的仅类方法
- 从 const 对象访问非 const 方法
- 如何在C++中使用类对象访问指针数据成员
- 如何通过不同的指针使用类的对象访问结构?(链表)(C++)
- 使用二进制搜索树中的迭代器对象访问左侧节点
- 为什么引用类型在使用临时对象访问时是左值
- 从父对象 c++ 访问子方法
- 无法通过指针或对象 c++ 访问受保护的成员
- 为什么可以从类中的对象访问类的私有变量
- 对类似"struct {double, int}"对象使用reinterpret_cast进行对象访问
- 通过无符号 char 别名进行对象访问,加载和存储时会发生什么?
- 从对象访问结构枚举
- 如何全局创建对象并使用该对象访问全局范围内的公共成员函数
- 在C 中,可以从第三个共享对象访问其他两个不同共享对象
- 如何在C 中提供一个可呼叫的对象访问,例如lambda
- C 向量对象访问
- C++是否可以从同级第二个派生对象访问第一个派生对象的受保护基础数据成员?
- 如何从类内实例化的对象访问私有变量
- 多态性:通过类文本或对象访问静态成员