0

私はこれ(*x).yがC++のようx->yであることを知っていますが、このコードは私のために配線されています。誰かが私を助けることができますか、それについて私に参照を与えることができますか?

4

3 に答える 3

2

全体として、変数名の用語を使用して、currentHtml()関数の戻り値をmanifest's currentItem'fileContent変数に格納します。

それを分解するには:

((ManifestItem*)manifest->currentItem())

クラスには、「現在のアイテム」を返すメソッドがありcurrentItem()ます。manifestは、この返されたアイテムをデータ型(ManifestItem*)にキャストします。ManifestItem

残りは、私が望む、自明です:

->fileContent = currentHtml();
于 2012-09-13T23:09:43.757 に答える
0

CPPではどういう((ManifestItem*)manifest->currentItem())->fileContent = currentHtml();意味ですか?

それは誰かが何か悪いことをしていることを意味します。

まず、タイトルに質問を入れて、何か悪いことをしているのです。第二に、そのキャストは何か疑わしいものの兆候です。だが ...

最初に知っておく必要があるのは、C++演算子の優先順位規則です。要素選択演算子->はキャスト演算子よりも優先される(type)ため、これを次のように書き直すことができます。

((ManifestItem*)(manifest->currentItem()))->fileContent = currentHtml();

パーツごとに分けて、

  1. manifestオブジェクトのメンバーcurrentItem()関数が呼び出され、おそらく何らかのタイプのポインターが返されます。キャストを考えると、私はポインタをcurrentItem()返すと思います。void*
  2. Cスタイルのキャスト演算子は、そのポインターをオブジェクトへのポインターに変換しManifestItemます。
  3. そのfileContentオブジェクトのメンバーは、を呼び出した結果に設定されますcurrentHtml()
于 2012-09-14T00:01:29.407 に答える
0
((ManifestItem*)manifest->currentItem())->fileContent = currentHtml();

1)currentHtml()を呼び出します

2)マニフェストをManifestItemへのポインターにキャストします

3)#2のポインターを逆参照し、そのcurrentItemメンバー関数を呼び出します

4)#3を逆参照し、そのfileContentデータメンバーに#1からの値を割り当てます-または、operator =()を使用します

于 2012-09-13T23:12:42.710 に答える