为什么我不能这样做:
struct sName {
vector<int> x;
};
只需要三个指针即可存储一个向量,所以我应该可以这样做吗?
答案 0 :(得分:3)
你mentioned在switch语句中失败了。你需要用一对额外的括号包起来:
int type = UNKNOWN;
switch(type)
{
case UNKNOWN:
cout << "try again" << endl;
break;
case KNOWN:
{ // Note the extra braces here...
struct sName
{
vector<int> x;
} myVector;
} // and here
}
或者,您可能已经声明了结构,并且只是尝试声明和初始化局部变量。这不是struct
独有的问题,只要您尝试初始化案例中的变量,它就会发生:
struct sName
{
vector<int> x;
};
int type = UNKNOWN;
switch(type)
{
case UNKNOWN:
cout << "try again" << endl;
break;
case KNOWN:
{ // Note the extra braces here...
sName myVector;
} // and here
case OTHER:
int invalid = 0; // this will also fail without the extra pair of braces
break;
}
答案 1 :(得分:2)
#include <vector>
using namespace std;
struct sName {
vector<int> x;
};
int main()
{
return 0;
}
编译:
g++ -Wall 1.cpp
编译好。
您的代码似乎有什么问题?
答案 2 :(得分:0)
你可以这样做。事实上,你上面的内容是正确的,并且工作正常(除了缺少的分号,std::
中可能缺少std::vector
。请改写你的问题,使其不与自相矛盾。