在嵌套类中使用struct vector的成员

时间:2013-08-09 12:19:28

标签: c++

我写了一些像这样的代码

struct connectedGrids
{
    int Coord[3];
    enum faceOrien_Type
    {
        xNeg = 0,
        xPos = 1,
        yNeg = 2,
        yPos = 3,
        zNeg = 4,
        zPos = 5
    }faceOrien;
};

class  face
{
public:
    vector<connectedGrids> ConnectedGrids;
};

class grid
{
public:
    face Face;
}

我在main.cpp

中初始化了一个对象Grid
vector<vector<vector<grid> > > Grid = initGrid();

我想在嵌套类中调用struct vector的成员,如下所示:

Grid[i][j][k].Face.ConnectedGrids.faceOrien = 1;

但它给我一个错误说

  

faceOrien不是std :: vector&lt; _Ty&gt;

的成员

我是C ++的新手,我无法摆脱错误的地方:(

3 个答案:

答案 0 :(得分:4)

嗯,ConnectedGrids是一个向量,你将其声明为

vector<connectedGrids> ConnectedGrids;

那么,你希望修改哪个<{1}}结构里面的

答案 1 :(得分:2)

ConnectedGrudsvector<connectedGrids>,但您将其视为connectedGrids对象。

Grid[i][j][k].Face.ConnectedGrids[0].faceOrien = 1;
//                               ^^^  assumes size > 0

答案 2 :(得分:2)

Grid [i] [j] [k] .Face.ConnectedGrids是一个向量。它肯定没有faceOrien成员。您应该向向量添加内容然后访问其元素,例如:

Grid[i][j][k].Face.ConnectedGrids.push_back(connectedGrids());
Grid[i][j][k].Face.ConnectedGrids[someIndex].faceOrien = 1;