在一個結構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中定義一個結構中的結構陣列C
- 3. C++:刪除一個結構?
- 4. 計算一個C#結構
- 5. 寫一個C結構
- 6. realloc的一個結構,C
- 7. 在C#中表示一個結構
- 8. 在C中傳遞一個結構
- 9. 一個結構在C定義
- 10. memcpy結構與另一個結構不工作在C
- 11. 從C++傳遞一個結構爲C#當結構運行時
- 12. C fread()一結構
- 13. C指針結構 - 緩衝區指向另一個結構。如何在C#中?
- 14. 結構在C#
- 15. C,在結構
- 16. 編組在C++結構的一個指針在C#陣列
- 17. 在另一個結構聲明一個結構
- 18. 如何在另一個結構中使用一個結構?
- 19. 一個結構
- 20. 一個結構
- 21. 一個結構
- 22. 一個結構
- 23. 一個結構
- 24. C++:爲什麼我的向量結構作爲一個結構?
- 25. C++結構是否可以接受另一個結構?
- 26. C#轉換結構到另一個結構
- 27. 如何解開另一個結構內的C風格結構?
- 28. 瞭解c#結構 - 如何創建一個結構數組?
- 29. 如何定義一個包含Ctype python結構的C結構
- 30. C中一個結構體中的結構暗示了什麼?
最新錯誤? – RvdK 2010-03-03 16:23:36
請提供一個小而完整的例子,告訴我們它失敗的方式。 – 2010-03-03 16:27:42
「只需要三個指針來存儲矢量」 - Whaaaaaa? – 2010-03-03 17:13:12