c ++向量和push_back

Cod*_*lus 0 c++ vector push-back

我收到一个奇怪的c ++错误:

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

我正在读这个,就像c ++试图告诉我该函数push_back不是vector类的一部分.这是我的相关代码:

        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
Run Code Online (Sandbox Code Playgroud)
  1. 我的错误在哪里,为什么c ++不喜欢这个?这对我来说似乎非常直观.

非常感谢所有帮助!

Bor*_*der 6

这是MVP(Most Vexing Parse)的案例:

vector<vector<float> > points();
Run Code Online (Sandbox Code Playgroud)

这实际上是一个函数声明,将其更改为:

vector<vector<float> > points;
Run Code Online (Sandbox Code Playgroud)

对于第一个版本,C++认为你声明了一个名为points的函数,它不带参数并返回浮点向量的向量.这就是为什么它抱怨它是非类型的原因.