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> >()’

我正在阅读这篇文章,就像 c++ 试图告诉我该函数push_back不是向量类的一部分。这是我的相关代码:

        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;

在第一个版本中,C++ 认为您正在声明一个名为 points 的函数,它不接受任何参数并返回一个浮点向量的向量。这就是为什么它抱怨它是一个非类类型。

于 2013-08-04T20:12:52.757 回答