我目前正在尝试使用“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);
}
};
但是我收到了一个错误:
No matching function call to 'ObjectEvent::process(GameObject* const)'
可能是什么问题?
答案 0 :(得分:5)
根据您的错误消息判断,process_events()实际上似乎是一个const函数。
void GameObject::process_events() const
{
process(this);
}
如果是这样,那么this
是一个const指针,而process()必须采用const GameObject *
。否则process()可以修改传递给它的点,这违反了process_events的承诺,不会修改this
。
void process(const GameObject* obj);
或者,从process_events()中删除const修饰符。
答案 1 :(得分:1)
如果您从<{1}}输入this
或使用this
的成员函数是 const ,那么它将是 const 指针。如果成员函数未声明 const ,则指针不会是。
void GameObject::process_events()
{
// ...
process(this); // 'this' is NOT a const pointer
}
void GameObject::process_events() const
{
// ...
process(this); // 'this' IS a const pointer
}