none
配列の参照の箇所でC2440のエラーが発生してしまいます。 RRS feed

  • 質問

  • Visual Studio 2013(Visual Studio 2008でも同様の事象が発生しました)のC++にて以下のソースをコンパイルしようとしたところ、

        int arr1[1][1] = { { 10 } };

        int(&arr2)[1][1] = 1 ? arr1 : arr1;

        int(&arr3)[1][1] = 1 ? (1 ? arr1 : arr1) : arr1;

    arr2の行ではエラーとなりませんが、arr3の行では「error C2440: '初期化中' : 'int (*)[1]' から 'int (&)[1][1]' に変換できません。」のエラーとなってしまいます。

    ソースの書き方として何が誤っているのか、正しくはどうすればよいのかご教授いただけませんでしょうか。

    特にarr2の行では問題ないのにarr3の行ではエラーとなる原因が知りたいと思っております。

    /以上よろしくお願いいたします。

    2014年1月30日 0:24

回答

  • 皆様、情報ありがとうございました。

    とりあえず、

    int(&arr3)[1][1] = *( 1 ? ( 1 ? &arr1 : &arr1) : &arr1 );

    で逃げることとしました。

    • 回答としてマーク 星 睦美 2014年2月6日 1:35
    2014年1月31日 12:26

すべての返信