2013-10-22 8 views
10

Questa è la dichiarazione del costruttore che ho nel mio file "solver.h"."Nessuna chiamata di funzione corrispondente" nel costruttore

Solver(const Board &board_c, int max_moves_c); 

Quando si cerca di compilare ricevo il seguente errore ...

solver.cpp: In constructor 'Solver::Solver(const Board&, int)': 
solver.cpp:6:55: error: no matching function for call to 'Board::Board()' 
    Solver::Solver(const Board &board_c, int max_moves_c) 

E poi elenca i candidati che sono i costruttori del Consiglio.

Non sono sicuro di quello che sto facendo male visto che non vedo alcuna ragione per cui dovrei ricevere questo errore.

Sto compilando con g ++.

risposta

14

error: no matching function for call to 'Board::Board()'

significa che alla classe Board manca il costruttore deafault. Nel costruttore di Solver probabilmente stai facendo qualcosa di simile:

Solver::Solver(const Board &board_c, int max_moves_c) { 
    Board b; // <--- can not construct b because constructor is missing 
    ... 
} 

in modo che sia necessario definire il costruttore di default o invocare il costruttore appropriato con alcuni argomenti.

"And then it lists the candidates which are the Board constructors."

Questo perché il compilatore vuole aiutarti in questo modo elenca i possibili costruttori effettivamente disponibili (definiti).