-1

この関数を含むクラス ノードがあります。

void Node::print(){
cout << word << trailing_char << endl;
}

現在、クラス自体はポインターによってのみアクセスされます。例えば:

Node* root

クラスポインタで変数データにアクセスする方法は次のとおりです。

root -> n;

しかし、関数にアクセスする方法がわかりません。私は試した

root -> print();

しかし、それはうまくいきませんでした。それはうまくコンパイルされました。エラーはありませんが、関数から出力が得られませんでした。

これが呼び出されるスニペットは次のとおりです。

while ( conductor -> n != NULL ) {
    conductor -> print();
    conductor = conductor -> n;
}
4

1 に答える 1

1

はい、root->print()動作するはずです。ただし、機能しない理由はほとんどありません。最も一般的な理由は次のとおりです。

  1. root正しく初期化されていません (たとえば、NULL ポインターです) - 実行時に失敗します
  2. print()メソッドが保護またはプライベートであり、それにアクセスする権限がありません - コンパイル時に失敗します。

その理由1.は、while ループが現在の要素 ( を呼び出す要素 print) がであるかどうかを確認する必要があるためNULLです。

while ( conductor != NULL ) {
    conductor -> print();
    conductor = conductor -> n;
}
于 2013-09-21T14:08:34.947 に答える