4

重複の可能性:
C 配列では、なぜこれが正しいのですか? a[5] == 5[a]
C および C++ での index[array] による配列へのアクセス

コードにバグと思われるものを見つけましたが、コンパイルされるだけでなく、最初は期待どおりに動作します...

次のコード スニペットを検討してください。

#include <string>
#include <iostream>
using namespace std;

class WeirdTest
{
public:
    int value;
    string text;
    WeirdTest() : value(0),
                  text("")
    {}
    virtual ~WeirdTest()
    {}
    void doWeirdTest()
    {
        value = 5;
        string name[] =
        {
            "Zero",
            "One",
            "Two",
            "Three",
            "Four",
            "Five"
        };
        text = value[name];
        cout << "text: " << text << endl;
    }
};
int main(int argc, char** argv)
{
    WeirdTest test;
    test.doWeirdTest();
    return 0;
}

text=value[name];あるべきだったのではなくtext=name[value];、コンパイラは文句を言いません。結果のバイナリコードは、「バグ」がここにあるかどうかに関係なくまったく同じです。私は g++ 4.6.3 を使用してコンパイルしています。誰かがここで何が起こっているかを知っていれば、とても感謝しています。私が見逃した標準の何かでしょうか?おそらく C++0x の自動バグ修正?;)

どうもありがとう、

乾杯 !

4

1 に答える 1