首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误联合:“.push_back”的左侧必须有类/结构/C2228

错误联合:“.push_back”的左侧必须有类/结构/C2228
EN

Stack Overflow用户
提问于 2013-07-23 11:19:22
回答 3查看 8.3K关注 0票数 1

刚开始学习向量,但我从VC++2010得到了这个错误,并被困在那里,请帮帮忙……

“错误C2228:'.push_back‘的左侧必须有类/结构/联合”

代码语言:javascript
复制
#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;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-23 11:23:05

代码语言:javascript
复制
vector<double> myVector();

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

它应该是公正的

代码语言:javascript
复制
vector<double> myVector;
票数 6
EN

Stack Overflow用户

发布于 2013-07-23 11:20:42

你的问题在这里,你声明的是一个函数,而不是一个向量,这就是所谓的most vexing parse。您当前拥有的被解释为函数的正向声明,该函数不带返回vector<double>的参数

代码语言:javascript
复制
vector<double> myVector();
                       ^^

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

代码语言:javascript
复制
vector<double> myVector ;

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

票数 2
EN

Stack Overflow用户

发布于 2013-07-23 11:24:05

这句话是错的:

代码语言:javascript
复制
vector<double> myVector();

否则编译器会认为myVector是一个返回向量值的函数!!

您应该像这样定义一个向量:

代码语言:javascript
复制
vector<double> myVector
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17800955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档