Я недавно отладил странную проблему 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.