У меня есть три файла .cpp: Game, Guesser и Provider. Каждый из файлов заголовков для них содержит соответствующее объявление класса.Инициализация ссылочных переменных в списке инициализации
В моем классе игры мне нужны частные переменные для Guesser и Provider.
Guesser имеет конструктор не по умолчанию
Guesser::Guesser (int wordLength, const char* wordListFilename){}
поэтому я должен инициализировать его через список инициализации на конструкторе игры.
То, что я до сих пор:
Guesser& guesser;
Provider& provider;
`Game::Game(int& wordLength, const char* filename, const Provider& providr) : guesser(wordLength, filename),provider(providr)
{
numMissedGuesses = 0;
wordSoFar = string(wordLength, FILL_CHARACTER);
}`
Этот код не компилируется, и я потерял куда идти отсюда.
Сообщения об ошибках компилятора:
|| === Сложение: Отладка в adthangman (компилятор: GNU GCC компилятора) === |
ошибка: «гадание» объявлено как ссылка, но не инициализировано |
ошибка: «поставщик» объявлен как ссылка, но не инициализирован |
В конструкторе 'Game :: Game (int, const char *, const Provider &)': |
ошибка: список выражений рассматривается как составное выражение в mem-initializer [-fpermissive] | предупреждение: левый операнд оператора запятой не действует [-Унимое значение] |
ошибка: недействительная инициализация ссылки типа «Guesser &» из выражения типа «const char *» |
ошибка: недействительная инициализация ссылки типа «Поставщик &» из выражения типа «const Provider» | || === Сбой сборки: 5 ошибок, 1 предупреждение (ы) (0 минута, 0 секунд (ы)) === |
Любая помощь очень ценится.
'угадывание' не должно быть ссылкой. – 0x499602D2
Я не могу объявить это каким-либо другим способом, не получив ошибку, что я не встречал формат конструктора. – James
Отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve). –