【发布时间】:2012-04-11 14:45:51
【问题描述】:
我有一个关于查找 2D 向量大小的问题。我的简单问题是我有一个向量,其中存储三个“形状”,每个形状都有随机数量的命中点(存储为笛卡尔坐标 {x,y,z})并且每个命中点都有随机颜色(存储为 RGB)我想知道每个形状有多少生命值。如果我这样做:
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);
}
【问题讨论】:
-
你能发布
VectorOfShapes的声明吗? -
在
VectorOfShapes[1].size中,.size可能是一个方法,而不是一个变量,所以你需要像VectorOfShapes[1].size()这样调用它。但是很难不知道什么是VectorOfShapes。 -
float HitPoints = VectorOfShapes[0].x + VectorOfShapes[0].y + VectorOfShapes[0].z? -
对不起@karlphilllip 错字,我更正了
-
“添加的信息”没用……