cin как объект istream без ссылки на объект буфера потока - PullRequest
0 голосов
/ 16 марта 2020

Я работал над вопросом, чтобы передать cin в качестве аргумента, вот мой код:

#include<istream>
#include<iostream>

void fun(std::istream &os)
{
    int i;
    os>>i;
    std::cout<<i<<std::endl;
}

int main()
{
    fun(std::istream::cin);  //ERROR

    return 0;
}

Ошибка говорит:

'cin' не член 'std :: istream' {aka 'std :: basic_istream'}

Ошибка исчезла, когда была сделана всего std::cin - теперь она записана в книге (CPP Учтите, что cin является объектом istream, но для конструктора istream требуется ссылка на объект потокового буфера, чтобы его можно было создать. Так как же cin просто работает без каких-либо аргументов? пример:

cin>>input;

1 Ответ

0 голосов
/ 16 марта 2020

std::cin - это объект, у которого тип равен std::istream. Его зовут std::cin. Это не член std::istream, поэтому вы не можете назвать его так, как если бы он был. Вот почему компилятор жалуется на std::istream::cin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...