无法访问类中的Struct成员

时间:2014-12-11 05:05:52

标签: c++ class struct

我上课了。类具有结构_tree_branch_m和类成员函数。该结构是成员函数的参数。在成员函数内部,我有一个错误来访问结构成员。我的结构出了什么问题? <{1}}无法解决错误。

Field 'NodeType'

2 个答案:

答案 0 :(得分:3)

  

3.3.2 / 6 首先在 elaborated-type-specifier 中声明的类的声明点如下:

     

- 表格

的声明      

class-key attribute-specifier-seq_opt identifier;

     

标识符在范围内被声明为类名   包含声明,否则

     

- 表格

elaborated-type-specifier      

类密钥标识符

     

...标识符在最小的命名空间或块中声明   包含声明的范围。

当您编写typedef struct _tree_branch_m *Tree_m;时,struct _tree_branch_m在全局范围内::_tree_branch_m转发声明一个名称。 Tree_mCascadeClassifier::_tree_branch_m没有任何关联。

您需要显式地向前声明成员结构:

class CascadeClassifier{
    struct _tree_branch_m;  // forward delcaration
    typedef _tree_branch_m *Tree_m;
    struct _tree_branch_m {...};
};

答案 1 :(得分:2)

行动中的示例:http://ideone.com/OxaJVj

您可以在将结构分配给typedef的同时声明结构。我不知道这是否是犹太洁食,我必须检查标准。但只需将这两个步骤分开就可以了:

typedef  struct _tree_branch_m *Tree_m;

struct _tree_branch_m;
typedef _tree_branch_m *Tree_m;

话虽如此,我建议不要使用前导下划线,因为即使你在技术上没有违反标准,如果你要把T大写或者把第二个_或者把它移到全局命名空间你' d违反保留名称。