C ++将指向当前对象的指针传递给函数

时间:2014-01-21 05:52:29

标签: c++ pointers this

这是一个标题问题,我忘了添加标题...

我们应该使用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
}

我做错了什么?如何获取指向当前对象的指针?

thisChess* 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();
};

1 个答案:

答案 0 :(得分:1)

  

getMoves(国际象棋*游戏)= 0;

getMoves将Chess类的指针作为参数。

  

list moves = p-&gt; getMoves(* this);

这里你传递* this,但这本身就是一个指针。

所以&gt; list moves = p-&gt; getMoves(this);