2013-02-10 2 views
0

나는 자동 유형의 테스트 변수를 선언했지만 이제는 액세스 방법을 모른다. 나는이 프로그램을 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

방금'테스트 [0]'포인터 즉 역 참조하지 않고 시도? 또한 대개 좋은 힌트를 제공하므로 오류 메시지를 읽어야합니다. –

+0

예! 'test [0]'오류에서 'operator for'에 '일치'가 없습니다. – Arpit

+1

무엇과 일치하지 않습니까? 추측해야합니까? –

답변

2

auto variable = { ... }std::ostreamoperator<<을 오버로드하지 않았으므로 std::initializer_list을 선언하므로이 오류가 발생했습니다. 예를 들어 범위 기반을 사용하여 목록의 값에 액세스 할 수 있습니다.

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

    return 0; 
} 
+0

빠른 응답을 보내 주셔서 감사합니다. – Arpit

+0

첫 번째 요소 만 원한다면'std :: cout << * begin (test) '를 사용할 수있다. – balki

2

가변 teststd::initializer_list이다. 당신은 그것의 값을 얻을 수 반복자를 사용하여, 또는 새로운 range-based for loop :

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

고마워. 다음에 나는 그것을 게시하기 전에 컴파일러 로그를 볼 것입니다. – Arpit

관련 문제