-1

我有一个名为“player”的类,我必须在我的项目中使用它,它看起来像这样:

template<typename F>
class player {
public:
  int play(const F &field);
};

现在我想在我的游戏中使用函数“play”,我试着这样调用它:

player<Game> player2();
player2.play(this);

我收到以下错误:

error: request for member 'play' in 'player2', 
which is of non-class type 'player<Game>()'

我不知道为什么会这样,我在其他课程中做了类似的事情并且效果很好......有人可以帮助我吗?(我正在使用 eclipse 和 mingw gcc)

编辑:

好的,现在一切正常。非常感谢。

4

2 回答 2

2

这段代码:

player<Game> player2();

是一个player2不带参数并player<Game>作为值返回的函数声明。将其更改为:

player<Game> player2;

请注意,它以前对您有用,因为您使用了带有参数的构造函数,如下所示:

Foobar foo( 123 );

在这种情况下,它不能被解释为函数声明并按预期工作。

编辑:方法

int play(const F &field);

期望一个 const 引用 ot 类型 F,你试图传递的是一个指针。您可能应该取消引用this

player2.play(*this);

于 2013-11-06T21:02:19.283 回答
0

play 的参数必须是 Game 类型而不是 player 类型。

Game myGame;
player<Game> player2;
player2.play(myGame);

应该管用。

于 2013-11-06T21:01:18.157 回答