我最近在調試一個奇怪的C++的問題,其中新申報矢量莫名其妙的大小爲477218589.這裏的背景:奇異向量初始化問題
struct Triangle {
Point3 a,b,c;
Triangle(Point3 x, Point3 y, Point3 z) : a(x), b(y), c(z) {}
Vector3 flat_normal() { return (a-c)^(b-c); }
};
vector<Triangle> triangles;
調用triangles.size()
返回值477218589
。 我通過將struct Triangle
更改爲class Triangle
來「解決」了問題,但我想知道爲什麼有什麼區別。我應該做那typedef struct Foo { ... } Foo;
魔法嗎?如果是這樣,爲什麼會有幫助?
如果很重要,我使用g ++ - 4.1。
由於更多的原因,你所描述的可以安全地稱爲「不太可能」。顯然,你並沒有發佈整個代碼。不,修改'struct'到'class'不會解決問題,如果有的話,除了導致翻譯單元的重新編譯之外。 – AnT 2010-02-19 08:08:02
如果要在調試期間可靠地監視變量,則必須關閉優化。如果程序本身輸出了錯誤的值,請發佈一個表現行爲的最小可編譯片段。 – avakar 2010-02-19 08:33:34
好吧,我還沒有能夠重現其他地方的錯誤,所以顯然它不存在! :-P謝謝,無論如何。 – perimosocordiae 2010-02-19 10:07:23