0

コード:

#include <vector>

int main()
{
    std::vector<int> v1 = {12, 34};
    std::vector<int> v2 = {56, 78};

    //Doesn't work.
    v1.push_back(v2[0]);

    //Works.
    int i = v2[0];
    v1.push_back(i);

    return 0;
}

何らかの理由で、最初の push_back は機能しませんが、2 番目は機能します。Eclipseはその行にエラーを出します:

Invalid arguments ' Candidates are: void push_back(const int &) void push_back(int &&) '

誰かがそこで何が起こっているのか説明できますか? ありがとう!

編集:

コードは実際に正常にコンパイルされます。何らかの理由で、Eclipse はこれが有効なコードであることに同意しません。

4

1 に答える 1

1

でコードをコンパイルするg++ 4.7.3

g++ test.cpp --std=c++0x

正しくコンパイルされ、印刷しようとするとv1[2];正しい結果が得られます。

std::cout << v1[2]; // 56

Eclipse コード アナライザー ツール ( CODAN ) は、この状況では正しくない可能性があります。

C++ (この場合は C++11 互換) コンパイラの出力に依存します。

于 2013-06-13T18:26:11.320 に答える