Как получить доступ к этой автоматической переменной?

я объявил тестовую переменную автоматического типа, но теперь я не знаю, как получить к ней доступ. Я знаю, как заставить эту программу работать без auto но здесь я хочу знать, как получить доступ к этому auto переменная.

int main() {
auto test = {'1','S'};
std::cout<<test; //error no match for operator... i tried using *test or *test[0] but no solution.
cin.get();
return 0;
}

Журнал компилятора:

Compiler: mingw
Executing  g++.exe...
g++.exe "C:\Users\Arpit\Desktop\delete.cpp" -o "C:\Users\Arpit\Desktop\delete.exe"   -std=c++11
C:\Users\Arpit\Desktop\delete.cpp: In function 'int main()':
C:\Users\Arpit\Desktop\delete.cpp:5:12: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
In file included from c:\program files\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/iostream:40:0,

from C:\Users\Arpit\Desktop\delete.cpp:1:
c:\program files\codeblocks\mingw\bin\../lib/gcc/mingw32/4.7.1/include/c++/ostream:600:5: error:   initializing argument 1 of 'std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&&, const _Tp&) [with _CharT = char; _Traits = std::char_traits<char>; _Tp = std::initializer_list<char>]'

Execution terminated

Как распечатать test?

0

Решение

Вы получили эту ошибку, так как auto variable = { ... } объявляет std::initializer_list, которые не перегружены operator<< за std::ostream, Вы можете использовать, например, диапазон, чтобы получить доступ к значениям из вашего списка.

int main()
{
auto test = {'1','S'};
for(const auto& elem: test)
std::cout << elem << ' ';
std::cout << std::endl;

return 0;
}
2

Другие решения

Переменная test имеет тип std::initializer_list. Вы должны использовать итераторы, чтобы получить значения из него, или новый на основе диапазона для цикла:

auto test = { '1', 's' };
for (const auto& i : test)
std::cout << i << '\n';
2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector