2013-04-23 3 views
1

Я получаю вышеуказанную ошибку в C++ при попытке инициализировать объект типа Board. Конструктор для платы принимает два целых числа, поэтому этоНет соответствующего вызова функции C++

Board::Board(int w, int h) 

И я пытаюсь создать игру Connect Four. Файл ConnectFour.h имеет следующее:

Board b; 

в своих частных переменных, а конструктор в ConnectFour.cpp это:

ConnectFour::ConnectFour() 
{ 
    Board b(7, 6); 

среди прочего, очевидно.

Это дает мне ошибку:

В конструкторе «:: Четыре в ряд Четыре в ряд (целое, целое)»: |

ошибка: нет соответствующей функции для звонка в «Совет :: Доска() '|

примечание: кандидаты: |

примечание: Board :: Board (int, int) |

примечание: кандидат ожидает 2 аргумента, 0 предоставлено |

Если кто-нибудь может протянуть руку, я бы очень признателен.

Редактировать: Оказывается, я был немного глупым. Спасибо, парни.

+1

См http://stackoverflow.com/questions/2308646/different-ways-of-constructing-an-object-in-c – jarmod

ответ

5

Вы должны предоставить конструктор для платы, которая не принимает никаких параметров для работы с Board b; кода, или вам нужно передать ширину, высоту объекта, когда он создан Board b(width, height); или вы можете поместить инициализацию платы в списке инициализации of ConnectFour


ConnectFour::ConnectFour() : 
b(7,6) 
{ 
} 
 

, так что у него есть информация, необходимая при создании ConnectFour.

Наконец, вы можете сохранить указатель на объект Board в родительском классе и динамически создать его в конструкторе родительского класса. Это требует большей осторожности и, вероятно, использования умных указателей для правильной обработки и уничтожения объекта.

1

Я предполагаю, что-то вроде этого

class board 
{ 
public: 
    board::board(int w,int h) 
    { 
     w = 0; 
     h = 0; 
    } 
}; 

class connectFour 
{ 
    connectFour::connectFour(int, int) 
    { 
     board b(7,9); 
    } 
}; 
+0

Не совсем решения параметров порядка проблема. У него есть Совет в качестве члена ConnectFour, то есть он должен сделать немного больше гимнастики C++, чем вы здесь показываете. –

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