在一个结构C++
回答
您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;
}
我以前见过这个原因,但为什么?这工作,但我不喜欢这个“解决方法”。 – 2010-03-03 16:47:27
@prasoon:交换机内的所有“case”都在相同的范围内。任何一个变量声明的变量都在它们的范围内,但可以跳过初始化。请参阅http://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a-switch-statement – Bill 2010-03-03 16:56:50
@ parasoon99:这不是一种解决方法 - 它利用语言的功能有意和有效的方式。这只是你不习惯的东西。我一直这样做。 – 2010-03-03 17:00:09
#include <vector>
using namespace std;
struct sName {
vector<int> x;
};
int main()
{
return 0;
}
编译时:
g++ -Wall 1.cpp
编译罚款。
什么似乎是你的代码的问题?
当我在switch语句中声明了这种类型的“struct sName z”变量时,出现错误:'sName z'的交叉初始化和'跳转到case标签'。否则,程序工作正常。 – 2010-03-03 16:32:20
@ parasoon99:这是一个完全不同的问题。用新的问题创建一个新帖子,但是这次*包括编译器错误* – 2010-03-03 16:36:12
谢谢 - 将会这样做。 – 2010-03-03 16:37:40
你可以做到这一点。事实上,你上面的内容是正确的,并且工作正常(除了缺少分号并且可能缺少std::
的std::vector
)。请重新说明你的问题,以免它与自身矛盾。
- 1. C++:删除一个结构?
- 2. 在C#中表示一个结构
- 3. C fread()一结构
- 4. 结构在C#
- 5. C,在结构
- 6. 如何在另一个结构中使用一个结构?
- 7. 一个结构
- 8. 一个结构
- 9. 一个结构
- 10. C#转换结构到另一个结构
- 11. 如何定义一个包含Ctype python结构的C结构
- 12. C++:为什么我的向量结构作为一个结构?
- 13. 在一个结构中扩展一个数组C
- 14. 我如何在结构数组的末尾添加一个ADDITIONAL结构?在C
- 15. [ANSI-C]使用结构像一个类
- 16. 传递一个类型的结构C++
- 17. 阵列++一个结构用C
- 18. 需要一个C结构解析器
- 19. C++如何删除一个结构?
- 20. C,结构的第一个成员
- 21. 在C将值分配给一个指针结构构件
- 22. 复制在一个结构
- 23. 指向在一个结构
- 24. Ç - 在一个结构
- 25. 打印在一个结构
- 26. 结构在C#和构造
- 27. 处理一个结构原产于C#在C++
- 28. 在C++和c中共享一个结构?
- 29. 结构在C,其成员也结构
- 30. 用途结构,typedef结构,在C++的
最新错误? – RvdK 2010-03-03 16:23:36
请提供一个小而完整的例子,告诉我们它失败的方式。 – 2010-03-03 16:27:42
“只需要三个指针来存储矢量” - Whaaaaaa? – 2010-03-03 17:13:12