在 C++ 中没有此函数的匹配函数
no matching function for this function in c++
我遇到了这个问题。我在这里阅读了其他一些页面,但没有找到解决方案:
这是我的代码:
void Tanque::update(World *world, vector<Fantasma*> *ListaFantasmas){
rot = bearing(rect.x, rect.y, ListaFantasmas->back()->rect.x, ListaFantasmas->back()->rect.y);
bala1-> update(&(ListaFantasmas-> back()));
}
最后一行给我一个错误。 (没有用于调用 bala::update(Fantasma**)
的 matchig 函数
这是 Bala:update 的代码:
void bala::update(Fantasma *fantasma){
rect.x = rect.x + speed * cos(rot);
rect.y = rect.y + speed * sin(rot);
rot = bearing(rect.x, rect.y, fantasma -> rect.x, fantasma -> rect.y);
}
如您所见,没有什么奇怪的。我在函数中通过引用传递参数,我没有发现任何错误。
您认为错误可能是什么?我该如何解决?
感谢阅读。
好像在这个调用
bala1-> update(&(ListaFantasmas-> back()));
^^^^^^^^^^^^^^^^
成员函数 back
returns 对类型 Fantasma *
对象的引用,并且您正在对其应用运算符 & 以获取类型 Fantasma **
[=15 的指针=]
也许你应该像这样调用函数
bala1-> update((ListaFantasmas-> back()));
^^^^^^^^^^^^^^^
问题
ListaFantasmas
的类型是vector<Fantasma*> *
因此,ListaFantasmas-> back()
返回值的类型是Fantasma*
.
行
bala1-> update(&(ListaFantasmas-> back()));
相当于:
Fantasma* temp = ListaFantasmas-> back();
bala1-> update(&temp);
这意味着,您正在尝试将 Fantasma**
传递给参数类型为 Fantasma*
.
的函数
解决方案
您可以使用:
bala1-> update(ListaFantasmas-> back());
`
为了使其更具可读性,您可以使用:
Fantasma* temp = ListaFantasmas-> back();
bala1-> update(temp);
我遇到了这个问题。我在这里阅读了其他一些页面,但没有找到解决方案:
这是我的代码:
void Tanque::update(World *world, vector<Fantasma*> *ListaFantasmas){
rot = bearing(rect.x, rect.y, ListaFantasmas->back()->rect.x, ListaFantasmas->back()->rect.y);
bala1-> update(&(ListaFantasmas-> back()));
}
最后一行给我一个错误。 (没有用于调用 bala::update(Fantasma**)
的 matchig 函数这是 Bala:update 的代码:
void bala::update(Fantasma *fantasma){
rect.x = rect.x + speed * cos(rot);
rect.y = rect.y + speed * sin(rot);
rot = bearing(rect.x, rect.y, fantasma -> rect.x, fantasma -> rect.y);
}
如您所见,没有什么奇怪的。我在函数中通过引用传递参数,我没有发现任何错误。
您认为错误可能是什么?我该如何解决?
感谢阅读。
好像在这个调用
bala1-> update(&(ListaFantasmas-> back()));
^^^^^^^^^^^^^^^^
成员函数 back
returns 对类型 Fantasma *
对象的引用,并且您正在对其应用运算符 & 以获取类型 Fantasma **
[=15 的指针=]
也许你应该像这样调用函数
bala1-> update((ListaFantasmas-> back()));
^^^^^^^^^^^^^^^
问题
ListaFantasmas
的类型是vector<Fantasma*> *
因此,ListaFantasmas-> back()
返回值的类型是Fantasma*
.
行
bala1-> update(&(ListaFantasmas-> back()));
相当于:
Fantasma* temp = ListaFantasmas-> back();
bala1-> update(&temp);
这意味着,您正在尝试将 Fantasma**
传递给参数类型为 Fantasma*
.
解决方案
您可以使用:
bala1-> update(ListaFantasmas-> back());
` 为了使其更具可读性,您可以使用:
Fantasma* temp = ListaFantasmas-> back();
bala1-> update(temp);