struct(c ++)中的向量定义

时间:2018-05-03 07:23:40

标签: c++ struct

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

我编写了一个Application,它使用一个具有常量预定义Value的Array,它定义了这个数组的大小。所以,但现在我想改变这一点,以便理论上“清单”可以是无穷无尽的(我知道这实际上是不可能的)。为此,我想使用矢量。但是当我键入以下内容时,它会给我一个错误:

编辑(2):为push_back funktion编写了意外的const和一个错误的参数,这是最终版本,它给出了错误。

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

using namespace std;

struct Board {
  vector <string> myVector;
  myVector.push_back("foo");
};

错误讯息:
<error-type> Board::myVector This declaration has no storage class or type specifier.



我的想法是,向量在structs中不起作用。我听说结构是一个简单的C事物,向量更像是一个C ++的东西,也许这就是为什么它是这样的?但实际上我没有任何线索,这就是为什么我在这里问:)



编辑(1): 我刚给你视觉工作室错误,也许我应该给你编译错误..: error C3927: '->': trailing return type is not allowed after a non-function declarator error C3484: syntax error: expected '->' before the return type error C3613: missing return type after '->' ('int' assumed) error C3646: 'push_back': unknown override specifier error C2059: syntax error: '(' error C2238: unexpected token(s) preceding ';'

1 个答案:

答案 0 :(得分:1)

问题如下:

  • corrected in OP question myVector已定义const
  • myVector.push_back(1);不在任何函数体中。
  • corrected in OP question 传递给myVector.push_back(1);的值为int,但vector的类型为{{1} }}

将其更改为以下内容。请参阅示例程序working here

string

更新:

<强>(#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; }

没有。 can you actually use push_back for a vector in a struct without creating an extra function?只能有structuredata members。但您可以使用member functions初始化向量,如下所示:

initializer-list

如果您想将initlize值始终放在最后,请使用vector.insert()代替vector.push_back()