【发布时间】:2013-04-26 01:55:56
【问题描述】:
我目前正在尝试使用“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)'
可能是什么问题?
【问题讨论】:
-
是的,
this是一个普通的指针。但是,您列出的功能不会给出该错误。请创建一个Short, Self Contained, Correct (Compilable), Example。 -
好的,我会输入我的真实代码,一秒钟
-
如果这是真正的代码,它看起来不错。确定那里没有 const 吗?只是为了未来的读者。
-
对我来说看起来像是一个编译器错误。通常可以复制 const 的可复制对象(除非有人搞砸了复制构造函数,这里不是这种情况)。
GameObject*应该从this初始化,它的类型是GameObject* const,除非从 const 成员尝试,但情况并非如此。实际上,您的代码应该可以工作。你说这并不意味着你使用的编译器是垃圾......或者你很困惑。后者的可能性更大。 -
这不是您的真实代码,也不是 SSCCE。
Class是一个死的赠品,事实上你有没有返回类型的函数。 Somehow, I feel like you failed to understand the importance of an SSCCE