Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 结构中的向量定义(c+;+;)_C++_Struct - Fatal编程技术网

C++ 结构中的向量定义(c+;+;)

C++ 结构中的向量定义(c+;+;),c++,struct,C++,Struct,一个非常基本的问题,但我还没有找到答案 我编写了一个应用程序,它使用一个具有常量预定义值的数组,该值定义了该数组的大小。所以现在我想改变这一点,这样“列表”理论上可以是无限的(我知道这实际上是不可能的)。为此,我想使用一个向量。但当我键入以下内容时,它会给我一个错误: 编辑(2):意外写入常量和错误的push_back funktion参数,这是给出错误的最终版本 #include "stdafx.h" #include "string" #include "vector" using nam

一个非常基本的问题,但我还没有找到答案

我编写了一个应用程序,它使用一个具有常量预定义值的数组,该值定义了该数组的大小。所以现在我想改变这一点,这样“列表”理论上可以是无限的(我知道这实际上是不可能的)。为此,我想使用一个向量。但当我键入以下内容时,它会给我一个错误:

编辑(2):意外写入常量和错误的push_back funktion参数,这是给出错误的最终版本

#include "stdafx.h"
#include "string"
#include "vector"

using namespace std;

struct Board {
  vector <string> myVector;
  myVector.push_back("foo");
};
#包括“stdafx.h”
#包括“字符串”
#包括“向量”
使用名称空间std;
结构板{
向量myVector;
myVector.push_back(“foo”);
};
错误消息:
Board::myVector
此声明没有存储类或类型说明符。



我的想法是向量在
结构中不起作用。我听说结构是一个简单的C语言,向量是C++的东西,也许这就是为什么?但实际上我不知道,这就是为什么我在这里问:)



编辑(1): 我刚刚给了您visual studio错误,也许我应该给您编译器错误..:
错误C3927:“->”:非函数声明符之后不允许有尾随返回类型
错误C3484:语法错误:返回类型前应为“->”
错误C3613:“->”之后缺少返回类型(假定为“int”)
错误C3646:'push_back':未知覆盖说明符
错误C2059:语法错误:'('

错误C2238:在“;”之前出现意外的令牌

问题如下:

  • 在OP问题中更正)
    myVector
    已定义
    const
  • myVector.push_back(1);
    不在任何函数体中
  • 在操作问题中更正了
    传递给
    myVector的值。向后推(1);
    int
    ,但
    vector
    字符串类型
更改如下。请参阅示例程序:


如果要将initlize值始终放在末尾,请使用而不是。

将代码放在结构“myVector.push_back(1);”中,您声明了常量向量,然后尝试修改它。第二个:
myVector.push_back(1)
在结构定义中是不可能的。你需要从一些课程、一本书或一些教程开始。很抱歉
const
是我的一个失败。写它实际上没有一个const,但问题是一样的。在得到答案后,请不要修复问题中的错误。目前唯一的答案很难阅读,因为大多数答案都是错误的它所指的hing不再出现在代码中。顺便问一句,你确定编译器错误来自你显示的代码吗?它抱怨
->
,这有点可疑,但代码中没有。我的问题是,你真的可以在不创建额外函数的情况下对结构中的向量使用
推回
创建一个结构对象时,会声明一个向量myVector,并自动在该向量的末尾获取一个值,例如“foo”
#include "string"
#include "vector"
#include "iostream"

using namespace std;

struct Board {
    vector<string> myVector;

    void push_back(string val)
    {
        myVector.push_back(val);
    }

    void print()
    {
        for (auto it = myVector.begin(); it != myVector.end(); ++it)
            cout << " | " << *it;
    }
};

int main()
{
    Board b;
    b.push_back("Value 1");
    b.push_back("Value 2");

    b.print();

    return 0;
}
vector<string> myVector{"IVal 1", "IVal 1"};