2017-05-02 38 views
2

は、私はconnection connect(destination*);ラインは何をするのか、このコードC++構造体のポインタを持つ構造体を初期化するには、

struct destination; 
struct connection; 
connection connect(destination*); 

渡って来ましたの?それが構造体名を渡していてもどうやってうまくコンパイルできますか?変数にstructを初期化してそのように渡すことになっていませんか?

struct destination; 
struct connection; 
destination dest; 
connection connect(dest); 

答えて

6

connection connect(destination*);ラインは何をしますか?

それはdestination*を取り、connectionを返すconnectという関数を宣言します。

この宣言では、名前はパラメータには指定されていません(特に有用ではありませんが、有効です)。本のコードスニペット(あなたが引用していない部分)の

connection connect(destination* ptr) 
{ 
    connection conn; 
    // do something with conn and ptr 
    return conn; 
}; 

残りの機能connectへの呼び出しを示してから、:そうは次のように機能がは、に定義されている場合おそらく、それが提供されますfと呼ばれる別の機能の中にあります。

機能宣言は、以前は6つの章でカバーされていました。

構造体名を渡しても、どのように正常にコンパイルされますか?

これは、関数宣言で実行する必要があるためです。

structを変数に初期化してから、そのように渡す必要はありませんか?理にかなって

+0

OK。接続と呼ばれる接続構造を作成していた場合、または接続を返す関数だった場合、私は混乱しました。 – glucomine

+0

@qwertyz:本当に唯一の方法は、あなたが(ほとんど!)どのように行ったかです: 'destination *'型は、宣言だけが可能です。そのような関数を呼び出す(またはオブジェクトを初期化する)のは有効ではありません。 –

関連する問題