C++使用"this"指针作为普通指针

use*_*179 0 c++ pointers this

我目前正在尝试使用"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)

可能是什么问题呢?

Joh*_*ica 5

根据您的错误消息判断,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修饰符.