2016-03-22 1 views
0

У меня есть этот один объект, который пытается вызвать функцию в функции другого класса. Эта функция выглядит следующим образом (Принадлежит к классу «Игрок»):C++: C2511: Перегруженная функция-член не найдена. проблемы при использовании 'this'

void play(Game *const currentGame, int x, int y); 

Когда я пытаюсь вызвать эту функцию из другого объекта (класса Game), как это:

player->play(this, x, y) 

И во время компиляции Я получаю эти ошибки:

Error 1 error C2061: syntax error : identifier 'Game' c:\users\shaqed\documents\visual studio 2013\projects\exe3\tictactoe.h 24 1 Exe3 
Error 3 error C2511: 'void Player::play(Game *const ,int,int)' : overloaded member function not found in 'Player' c:\users\shaqed\documents\visual studio 2013\projects\exe3\tictactoe.cpp 40 1 Exe3 
Error 4 error C2660: 'Player::play' : function does not take 3 arguments c:\users\shaqed\documents\visual studio 2013\projects\exe3\tictactoe.cpp 158 1 Exe3 

Я пришел из Java, так что, может быть, мне не хватает некоторых из основных принципов о указателях и ссылках, однако я мог понять, почему существует несоответствие типов здесь.

Заранее спасибо

+0

Сначала исправьте первую ошибку. Похоже, что все это каскадные ошибки. Когда он достигает объявления метода 'play' в заголовке, видимо, он не знает, что такое' Game'. Это объявлено или предварительно объявлено до этого? – Cameron

ответ

0

Я повторил вашу проблему с теми же ошибками компиляции. Я думаю, вы забыли добавить в конце вашего метода тело. Вроде:

void play (const Game * currentGame, int x, int y) {}

+0

'Game * const currentGame' отлично подходит (хотя, вероятно, и не то, что предназначалось). Он объявляет параметр с именем 'currentGame', который является' const' (не может быть повторно назначен внутри тела метода) и указывает на объект 'Game'. – Cameron

+0

Кэмерон, ты абсолютно прав. –

Смежные вопросы