2013-10-22 9 views
10

में "कोई मिलान करने वाला फ़ंक्शन कॉल" यह कन्स्ट्रक्टर घोषणा है कि मेरे पास मेरी "solver.h" फ़ाइल में है।कन्स्ट्रक्टर

Solver(const Board &board_c, int max_moves_c); 

जब मैं निम्नलिखित त्रुटि मिलती है संकलित करने के लिए कोशिश कर रहा है ...

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) 

और फिर यह उम्मीदवारों जो बोर्ड निर्माता ये हैं सूचीबद्ध करता है।

मुझे यकीन नहीं है कि मैं क्या गलत कर रहा हूं क्योंकि मुझे कोई कारण नहीं दिख रहा है कि मुझे यह त्रुटि क्यों मिलनी चाहिए।

मैं g ++ के साथ संकलित कर रहा हूं।

उत्तर

14

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

का अर्थ है कि कक्षा Board में डेफॉल्ट कन्स्ट्रक्टर गुम है।

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

तो आप या तो डिफ़ॉल्ट निर्माता परिभाषित या कुछ तर्क के साथ उचित निर्माता आह्वान करने के लिए है: Solver के निर्माता में आप शायद की तरह कुछ कर रहे हैं।

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

ऐसा इसलिए है क्योंकि संकलक आपकी मदद करना चाहता है ताकि यह संभावित रचनाकारों को सूचीबद्ध कर सके जो वास्तव में उपलब्ध हैं (परिभाषित)।

संबंधित मुद्दे