错误 C2228:'.push_back'左侧必须具有类/结构/联合

error C2228: left of '.push_back' must have class/struct/union

本文关键字:联合 结构 C2228 push 错误 back      更新时间:2023-10-16

刚开始学习向量,但我在VC++2010中遇到了这个错误,并一直停留在那里,请帮忙。。。。

"错误C2228:'.push_back'的左侧必须具有类/结构/联合"

#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;
}
vector<double> myVector();

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

它应该只是

vector<double> myVector;

这句话错了:

vector<double> myVector();

或者编译器将myVector视为返回vector值的函数!!

你应该定义这样一个向量:

vector<double> myVector

您的问题是,您声明的是一个函数而不是向量,这被称为最麻烦的解析。您当前拥有的内容被解释为一个函数的前向声明,该函数不接受返回vector<double>:的参数

vector<double> myVector();
                       ^^

如果你只想使用默认的构造函数,它需要是:

vector<double> myVector ;

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