首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-08-13 
嵌套类中的结构体调用问题有一个类Grid,其中一个成员变量是一个Face类,这两个类的定义分别写在了Grid.h和F

嵌套类中的结构体调用问题
有一个类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]是啥意思?

热点排行