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

4

2 に答える 2

2

に対してオーバーロードされていないをauto variable = { ... }宣言しているため、このエラーが発生しました。たとえば、範囲ベースのforを使用して、リストから値にアクセスできます。std::initializer_listoperator<<std::ostream

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

    return 0;
}
于 2013-02-10T17:25:56.077 に答える
2

変数testのタイプはstd::initializer_listです。イテレータを使用して値を取得するか、新しい範囲ベースのforループを使用する必要があります。

auto test = { '1', 's' };
for (const auto& i : test)
    std::cout << i << '\n';
于 2013-02-10T17:26:17.770 に答える