Мой вопрос касается следующей функции-члена Bifstream, которая наследуется от ifstream.Рид ожидает указатель на символ.Я даю это (символ *) и цель.target - это ссылка, так что я дал ссылку на ссылку на int.Почему это работает?
bool cBifstream::ReadInt( int& target ){
if( !this->is_open() ){
return false;
}
this->read( (char*)&target, sizeof(int) );
}
Вот фрагмент из другого рабочего кода, который я использую.
int size;
is.read((char*)&size, sizeof(int));
Синтаксис такой же, но на этот раз переменная представляет собой int, а нессылка на int.
Целевое объявление:
cBifstream a("test2");
int b;
a.ReadInt(b);
РЕДАКТИРОВАТЬ: Спасибо за ответы.Я до сих пор не понимаю одну вещь.
this->read( (char*)target, sizeof(int) ); (all i did here was remove the ampersand)
Это изменение вызывает сбой моей программы.Однако target - это ссылка на int, поэтому вышеприведенное должно работать, потому что
int size;
is.read((char*)&size, sizeof(int));
работает.