E0289 отсутствуют экземпляры конструктура

Рейтинг: 1Ответов: 2Опубликовано: 08.01.2023
#include <iostream>
#include <string_view>
#include <string>
std::string_view LoL()
{
    std::string str{};
    std::getline(std::cin >> std::ws, str);
    return str;
}
int main()
{
    std::string_view x{LoL};
    std::cout << x;
    return 0;
}

не компилируется пишет

Ошибка (активно) E0289 отсутствуют экземпляры конструктора "std::basic_string_view<_Elem, _Traits>::basic_string_view [с _Elem=char, _Traits=std::char_traits]", соответствующие списку аргументов getline E:\c++\getline\Source.cpp 12

что делать

Ответы

▲ 2

В строке

std::string_view x{LoL};

вы передаете в качестве аргумента адрес функции LoL, а не результат ее вызова.

std::string_view x{LoL()};

Просто интересно, сколько секунд вы пытались решить этот вопрос самостоятельно?

И еще —

std::string_view LoL()
{
    static std::string str{};

или

std::string LoL()
{
    std::string str{};
    std::getline(std::cin >> std::ws, str);
    return str;
}

int main()
{
    std::string lol = LoL();
    std::string_view x{lol};
    std::cout << x;
    return 0;
}
▲ 1

Вы не вызываете функцию LoL

std::string_view x{LoL()};