这是一个标题问题,我忘了添加标题...
我们应该使用getMoves(this)
我需要将一个指向当前对象的指针发送给一个函数,但无法找到如何做到这一点......:/
chess_piece.h
class ChessPiece
{
public:
virtual std::list<Move *> getMoves(Chess *game) = 0;
};
chess.cpp
list<Move *> Chess::getMoves()
{
ChessPiece *p;
...
list<Move *> moves = p->getMoves(*this);
// can't manage to get a pointer to the current object here
}
我做错了什么?如何获取指向当前对象的指针?
this
是Chess* const
*this
给了我一个Chess&
:
list<Move *> moves = p->getMoves(*this);
我得到no matching function for call to ‘ChessPiece::getMoves(Chess&)’
修改
每个人都在告诉我这样做:
list<Move *> moves = p->getMoves(this);
但我已经尝试了,我得到了:
no matching function for call to ‘ChessPiece::getMoves(Chess* const)’
EDIT2
这是我对Chess :: getMoves()的声明:
chess.h
class Chess : public Game
{
public:
std::list<Move *> getMoves();
};
答案 0 :(得分:1)
getMoves(国际象棋*游戏)= 0;
getMoves将Chess类的指针作为参数。
list moves = p-&gt; getMoves(* this);
这里你传递* this,但这本身就是一个指针。
所以&gt; list moves = p-&gt; getMoves(this);