[英]Strange vector initialization issue
我最近调试了一个奇怪的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
更改为struct Triangle
class Triangle
来“解决”该问题,但我想知道为什么会有任何区别。 我应该完成typedef struct Foo { ... } Foo;
魔法? 如果是这样,为什么会有帮助?
如果有关系,我正在使用g ++-4.1。
将Triangle
声明为结构或类之间应该没有任何区别-在C ++中,两者之间的区别在于,成员的默认访问规范对于struct是公共的,对于类是private的,仅此而已。
除了Triangle
还有其他您没有包括的内容吗?
这个
#include <vector>
#include <iostream>
struct Point3 {};
struct Triangle {
Point3 a,b,c;
Triangle(Point3 x, Point3 y, Point3 z) : a(x), b(y), c(z) {}
};
int main()
{
std::vector<Triangle> triangles;
std::cout << triangles.size() << '\n';
return 0;
}
为我打印0
。 如果它也对您有用,那么问题出在此代码片段未包含的部分代码中。 如果打印出其他任何内容,则说明您的编译器/ std lib / setup有问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.