我有一个关于找到2D矢量大小的问题。我的一个简单的问题是,我有一个矢量用于存储三个“形状”,每个形状都有一个随机数量的生命值(存储为笛卡尔坐标{x,y,z}),每个生命点都有一个随机颜色(存储为RGB)I想知道每个形状有多少个生命点。如果我这样做:
VectorOfShapes.size()
我得到答案
3
这是一个类似的问题 here。但它没有帮助我。他们的解决方案是
VectorOfShapes[1].size()
我试过了,我收到了以下错误“error C2228: left of '.size' must have class/struct/union “。这很好地回答了(按照链接)。它仍然没有帮助我(或我是愚蠢的)... 有什么想法吗?
// ----------添加信息
class World {
public:
vector<Flux*> VectorOfShapes;
void
containers(int obnum, Ray reflect, RGBColor Ll);
void
build(void);
void
add_vectorshape(Flux* vectorshape_ptr)
private:
void
delete_VectorOfShapes
}
inline void
World::add_vectorshape(Flux* vectorshape_ptr){
VectorOfShapes.push_back(vectorshape_ptr);
}
void
World::containers(int obnum, Ray reflect, RGBColor Ll)
{
vectorOfShapes[obnum]->push(reflect);
VectorOfShapes[obnum]->push(Ll);
int sizers = VectorOfShapes[0].size(); //this is where the code is giving me errors
}
void
World::build(void) {
Flux* vectorshape_ptr1 = new Flux;
add_vectorshape(vectorshape_ptr1);
Flux* vectorshape_ptr2 = new Flux;
add_vectorshape(vectorshape_ptr2);
Flux* vectorshape_ptr3 = new Flux;
add_vectorshape(vectorshape_ptr3);
}
void
World::delete_VectorOfShapes(void) {
int num_VectorOfShapes = VectorOfShapes.size();
for (int j = 0; j < num_VectorOfShapes; j++) {
delete VectorOfShapes[j];
VectorOfShapes[j] = NULL;
}
VectorOfShapes.erase (VectorOfShapes.begin(), VectorOfShapes.end());
}
class Flux{
public:
std::vector<Ray> rays;
std::vector<RGBColor> L;
void push(Ray ray);
void push(RGBColor Ls) ;
};
inline void
Flux::push(Ray ray) {
rays.push_back(ray);
}
inline void
Flux::push(RGBColor Ls){
L.push_back(Ls);
}
答案 0 :(得分:1)
基于提供fluxs
声明的评论:
vector<Flux*> fluxs;
fluxs
是一个指针向量,意思是:
fluxs[i]
返回Flux*
,而不是Flux
,因此您必须使用->
,就像您在已发布的代码中设置属性一样。如果没有Flux
的定义,我假设有一个获取hitpoints
的吸气剂,如上所述,fluxs
中恰好有三个元素,所以要获得{{1}中的生命值总数你可以只是:
fluxs
编辑:
如果 hitpoint 计数是int total_hitpoints = fluxs[0]->get_hitpoints() +
fluxs[1]->get_hitpoints() +
fluxs[2]->get_hitpoints();
(或Flux::rays
)中元素的数量,那么:
Flux::L