我目前正在尝试使用"this"指针传递指向函数的指针:
void GameObject::process_events()
{
std::vector<ObjectEvent*>::iterator it;
for (it = events.begin(); it != events.end(); it++)
(*it)->process(this);
}
Class ObjectEvent
{
private:
bool* trigger;
void (*response)(GameObject*);
public:
process(GameObject* obj)
{
if (*trigger)
response(obj);
}
};
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
No matching function call to 'ObjectEvent::process(GameObject* const)'
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
根据您的错误消息判断,process_events()实际上似乎是一个const函数.
void GameObject::process_events() const
{
process(this);
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,那么this是一个const指针和process()必须采取一个const GameObject *.否则process()可以修改传递给它的点,这违反了process_events的承诺,不会修改this.
void process(const GameObject* obj);
Run Code Online (Sandbox Code Playgroud)
或者,从process_events()中删除const修饰符.
| 归档时间: |
|
| 查看次数: |
143 次 |
| 最近记录: |