Чтобы включить ввод для твоего класса Fred, используй перегрузку операторов с operator>> (оператор сдвига вправо). Это позволит твоему классу работать без проблем со стандартными потоками ввода, вроде std::cin.
Функция operator>> должна:
Fred&), в отличие от оператора вывода, который использует const Fred&std::istream&)class Fred {
public:
friend std::istream& operator>> (std::istream& i, Fred& fred);
private:
int i_;
};
std::istream& operator>> (std::istream& i, Fred& fred) {
return i >> fred.i_;
}
int main() {
Fred f;
std::cout << "Enter a Fred object: ";
std::cin >> f;
}
Возврат ссылки на поток критически важен, потому что это позволяет:
std::cin >> f1 >> f2 >> f3;if (std::cin >> f) { ... }while (std::cin >> f) { ... }Этот паттерн следует стандартным соглашениям C++, которые используются встроенными типами и стандартной библиотекой.
Оператор operator>> для ввода должен принимать const ссылку на объект, в который происходит чтение, так же как operator<< принимает const ссылку на объект для вывода.
Новый — ещё не проверен сообществом
Вы