-2
我有一個關於查找2D矢量大小的問題。我的一個簡單問題是,我有一個存儲三個「形狀」的矢量,每個形狀有一個隨機數的存儲點(存儲爲笛卡爾座標{x,y,z}),每個存儲點都有一個隨機顏色(存儲爲RGB)I想要找出每個形狀有多少個生命值。如果我做的:查找2D矢量的大小
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'的聲明嗎? – hmjd 2012-04-11 14:48:43
在'VectorOfShapes [1] .size'中,'.size'可能是一個方法,而不是一個變量,因此您需要將它稱爲'VectorOfShapes [1] .size()'。但很難說沒有什麼是VectorOfShapes。 – karlphillip 2012-04-11 14:52:56
'float HitPoints = VectorOfShapes [0] .x + VectorOfShapes [0] .y + VectorOfShapes [0] .z'? – Cyclonecode 2012-04-11 14:55:02