2011-01-27 5 views
0
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機能を配置する場合、それらのすべてが似答えより入れ子構造

  • を持っていると思いますそれにグローバルショー機能?

    いくつかの努力;

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

    でマークされた行の全ての(!)、エラーを与え、WHY

  • メイン機能で

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

エラーの原因を教えてください。 "頭"とは何ですか? –

+0

@Chris Card、私はエラーを保存していません –

答えて

0

あなたは非C++背景からあるようです(C#?)。 あなたの質問のいくつかに応答して: オブジェクトのスコープからグローバルにアドレスする正しい方法:: read()は単純にShow(Head)または:: Show(head) - ここで問題を抱えている理由が疑わしい頭が定義されていないためです。 p.obj.brach(P)あなたは、P-> obj->のBrach(P)があり

を望んでいる:>逆参照ポインタに演算子特に代わりに - あなたが使用する必要がありますメインの手順では

ここで表現されたコードやアイデアには他にも多くの間違っているようですが、それ以上のソースコードやあなたがしようとしていることのアイデアがなければ、あなたにアドバイスするのは難しいです。

+0

頭はグローバルで定義されていますが、私はそれを忘れてしまいます –

+0

実際には、関数の宣言または読み込みの定義の上にshowを定義する必要があります。 – Elemental

1

詳細なソースコードが必要です。ここでは推測できる変数は宣言されていません。 but:

show(object*)関数はグローバル関数なので、呼び出しには接頭辞は必要ありません。

object構造体には、任意のobjタイプのメンバ変数があります。構造体だけが宣言され、いくつかの独自のメソッドとその構造体が定義されます。 したがって、メイン関数ではstatic関数の場合にのみobj::brachメソッドを呼び出すことはできません。

オブジェクト構造内にobj* head;メンバを宣言し、それを作成して(p->head = new object::obj())、p->head->brach(..)を呼び出します。

関連する問題