一个非常基本的问题,但我还没有找到答案。
我编写了一个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 ';'
答案 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?
只能有structure
和data members
。但您可以使用member functions
初始化向量,如下所示:
initializer-list
如果您想将initlize值始终放在最后,请使用vector.insert()
代替vector.push_back()
。