Проблема:
char charVariable;
...
loadChar(charVariable, positonOfCharacter);
Здесь вы пытаетесь передать значение char
вместо указателя (т.е. char*
), ожидаемого функцией.Это незаконно.
Простое решение:
Используйте адрес своей переменной при вызове функции:
loadChar(&charVariable, positonOfCharacter); // note the &
Альтернатива:
Если вы не такзнаком с указателями, вы также можете изменить сигнатуру функции и использовать ссылку вместо указателя.Ссылки позволяют изменить значение исходной переменной:
bool LoadEntity::loadChar(char& outputChar, int position) // note the &
{
...
outputChar = file.get(); // note: no * anymore
...
}
Несвязанная проблема:
Существует проблема с использованием get()
.Следующее действие приведет к тому, что вы дважды прочитаете файл, но проигнорируете первый ввод:
if(file.get())
{
* outputChar = file.get();
...
}
Кроме того, если нет доступного символа, оператор if все же может быть выполнен и вернет значение, так как нет гарантии что функция вернет 0 .
Предпочтение:
if(file.get(*outputChar))
{
return true;
}
Не волнуйтесь: выходной символ не изменится, если из файла не будет прочитан ни один символ.