私はこれ(*x).yがC++のようx->yであることを知っていますが、このコードは私のために配線されています。誰かが私を助けることができますか、それについて私に参照を与えることができますか?
3 に答える
全体として、変数名の用語を使用して、currentHtml()関数の戻り値をmanifest's currentItem'fileContent変数に格納します。
それを分解するには:
((ManifestItem*)manifest->currentItem())
クラスには、「現在のアイテム」を返すメソッドがありcurrentItem()ます。manifestは、この返されたアイテムをデータ型(ManifestItem*)にキャストします。ManifestItem
残りは、私が望む、自明です:
->fileContent = currentHtml();
CPPではどういう
((ManifestItem*)manifest->currentItem())->fileContent = currentHtml();意味ですか?
それは誰かが何か悪いことをしていることを意味します。
まず、タイトルに質問を入れて、何か悪いことをしているのです。第二に、そのキャストは何か疑わしいものの兆候です。だが ...
最初に知っておく必要があるのは、C++演算子の優先順位規則です。要素選択演算子->はキャスト演算子よりも優先される(type)ため、これを次のように書き直すことができます。
((ManifestItem*)(manifest->currentItem()))->fileContent = currentHtml();
パーツごとに分けて、
manifestオブジェクトのメンバーcurrentItem()関数が呼び出され、おそらく何らかのタイプのポインターが返されます。キャストを考えると、私はポインタをcurrentItem()返すと思います。void*- Cスタイルのキャスト演算子は、そのポインターをオブジェクトへのポインターに変換し
ManifestItemます。 - その
fileContentオブジェクトのメンバーは、を呼び出した結果に設定されますcurrentHtml()。
((ManifestItem*)manifest->currentItem())->fileContent = currentHtml();
1)currentHtml()を呼び出します
2)マニフェストをManifestItemへのポインターにキャストします
3)#2のポインターを逆参照し、そのcurrentItemメンバー関数を呼び出します
4)#3を逆参照し、そのfileContentデータメンバーに#1からの値を割り当てます-または、operator =()を使用します