读书人

嵌套类中的结构体调用有关问题

发布时间: 2013-08-13 16:43:28 作者: rapoo

嵌套类中的结构体调用问题
有一个类Grid,其中一个成员变量是一个Face类,这两个类的定义分别写在了Grid.h和Face.h文件中,而Face.h文件中,在Face类的定义之前我写了一个结构体变量connectedGrids。
现在我想在Face类的定义中声明一个connectedGrids类型的vector,然后在主程序中新建一个Grid类型的对象,并实现下面方式的调用,但是下面的代码编译时出错,正确的方式应该如何实现?


Grid.Face.ConnectedGrids.faceOrien = 1; //这里提示ConnectedGrids不是face的成员



//Face.h
struct connectedGrids
{
int Coord[3];
enum faceOrien
{
xNeg = 0,
xPos = 1
};
};

class face
{
public:
vector<connectedGrids> ConnectedGrids; //编译时该行提示语法错误 : 缺少“;”(在“<”的前面)
face();
~ face();
};



//Grid.h
class grid
{
public:
face Face;
grid();
~grid();
}

[解决办法]
enum faceOrien
{
xNeg = 0,
xPos = 1
};
这个貌似是定义类型啊,不是变量。定义变量改成
enum
{
xNeg = 0,
xPos = 1
}faceOrien;

[解决办法]
引用:
enum faceOrien
{
xNeg = 0,
xPos = 1
};
这个貌似是定义类型啊,不是变量。定义变量改成
enum
{
xNeg = 0,
xPos = 1
}faceOrien;

++
这样定义的是匿名的枚举类型

或者:
struct connectedGrids
{
int Coord[3];
enum faceOrien_type //这是定义枚举的类型
{


xNeg = 0,
xPos = 1
};
faceOrien_type faceOrien; //声明枚举变量
};



[解决办法]
//Grid[i][j][k].Face.ConnectedGrids.faceOrien[0] = (i==0)?0:1;
//改成
Grid[i][j][k].Face.ConnectedGrids.faceOrien = (i==0)?0:1;

//faceOrien是枚举变量,又不是枚举数组 后面加[0]是啥意思?

读书人网 >C++

热点推荐