0

奇妙な C++ エラーが発生します。

main.cpp:81:9: error: request for member ‘push_back’ in ‘points’, which is of non-class type ‘std::vector<std::vector<float> >()’

push_back関数がベクトルクラスの一部ではないことをc ++が教えようとしているように、私はこれを読んでいます。これが私の関連コードです:

        vector<vector<float> > points(); //construct an empy vector of vectors                                          
        vector<float> first(3,0);        //construct 0 vector in R^3                                                     
        points.push_back(first);         //put (0, 0, 0) in points
  1. ここで私のエラーはどこにあり、なぜ c++ はこれを好まないのですか? これは私には非常に直感的に思えます。

すべてのヘルプは大歓迎です!

4

1 に答える 1

6

これは MVP (Most Vexing Parse) の場合です。

vector<vector<float> > points();

これは実際には関数宣言です。次のように変更します。

vector<vector<float> > points;

最初のバージョンでは、引数を取らず、float のベクトルのベクトルを返す points という関数を宣言していると C++ は認識します。そのため、非クラス型であると不平を言っています。

于 2013-08-04T20:12:52.757 に答える