嵌套结构的更多问题

时间:2011-01-27 11:00:09

标签: c++ structure

object *head = NULL, *tail = NULL;  // EDIT
struct object { 
           vector <int> data;
           object * read ( void ) ;
           struct obj {
                obj *next; 
                object * brach ( object * ) ;
           };
};

object * object :: read ( void ) {
     ... // some code to read and return  (dynamically token space) pointer
}
object * object :: obj :: brach ( object * p ) {
     ... // some code to make link list and pointer to middle 
}

void show ( object * p ) {
     ... // to show data, from head to tail
}

关于嵌套结构的很多问题,但我认为它们都有类似的答案

  • 如果我想将show函数放入read函数中,我该如何使用全局show函数?

    一些努力;

    object * object :: read ( void ) {
    
     ... // some code to read and return  (dynamically token space) pointer
    
     :: show ( head ) ;  ( ! ) 
    
     head :: obj :: show ( head ) ; ( ! )
    
     head . obj . show ( head ) ;   ( ! )
    
     }  
    

    标有(!)的所有行都会出错,为什么

  • 主要功能
  • object *p = new object ;
    ... // some code to read data
    object *tmp = NULL;
    tmp = p -> obj . brach ( p ) ; ( ! ) 
    
    **how** can I fix it ? 
    

2 个答案:

答案 0 :(得分:1)

需要更多源代码。这之后不是声明的变量,可以猜测,哪个名称属于哪种类型。 但是:

show(object*)函数是一个全局函数,因此调用不需要任何前缀。

object结构具有任何obj类型的成员变量。只声明了一个结构并定义了一些自己及其结构的方法。 因此,在main函数中,只有当obj::brach函数为static函数时才能调用obj* head;方法。

在对象结构中声明p->head = new object::obj()成员,创建它(p->head->brach(..)),然后调用{{1}};

答案 1 :(得分:0)

似乎你来自非C ++背景(C#?)。 回答您的一些疑问: 从您的object :: read()范围来解决全局的正确方法是简单地Show(Head)或:: Show(head) - 我怀疑你在这里遇到问题的原因是因为head未被定义。

在主要程序中,您需要使用 - &gt;运算符专门取消引用指针而不是: p.obj.brach(p)你想要p-&gt; obj-&gt; brach(p)

这里表达的代码和想法似乎还有很多其他问题,但如果没有更多源代码并且想知道你想要做什么,就很难建议你。