错误C2228:'。push_back'的左边必须有class / struct / union

时间:2013-07-23 03:19:22

标签: c++ visual-c++ stdvector

刚刚开始学习矢量,但我从VC ++ 2010中得到了这个错误并且卡在那里,请帮助....

“错误C2228:'。push_back'的左边必须有class / struct / union”

#include <vector>
#include <iostream>
#include <limits>

using namespace std;

int main()
{
    vector<double> myVector();
    double temp = 30.0;
    myVector.push_back(temp);   //this line makes error ?? why??

    return 0;
}

3 个答案:

答案 0 :(得分:6)

vector<double> myVector();

这一行看起来像一个函数返回向量的前向声明。

应该只是

vector<double> myVector;

答案 1 :(得分:2)

你的问题在这里,你宣称一个函数不是一个向量,这被称为most vexing parse。您目前所拥有的是被解释为函数的前向声明,该函数不带任何返回vector<double>的参数:

vector<double> myVector();
                       ^^

如果您只想使用默认构造函数,则需要:

vector<double> myVector ;

与您当前的问题无关,我会反对using namespace std;。我意识到它无处不在,它节省了一些打字,但从长远来看,它会给你带来麻烦。

答案 2 :(得分:2)

这句话错了:

vector<double> myVector();

或编译器会认为Vector是一个返回vector !!值的函数。

你应该定义一个这样的矢量:

vector<double> myVector