什么((ManifestItem *)manifest-> currentItem()) - > fileContent = currentHtml();在cpp中意味着什么?

时间:2012-09-13 23:03:46

标签: c++

我知道这个(*x).y与c ++中的x->y类似,但这段代码适用于我。有人可以帮我或者给我一个参考吗?

3 个答案:

答案 0 :(得分:2)

总的来说,使用变量名中的术语,它会将currentHtml()函数的返回值存储到manifest的{​​{1}}的{​​{1}}变量中。

要打破它:

currentItem

fileContent类中有一个方法((ManifestItem*)manifest->currentItem()) 将返回“当前项目”。 currentItem()会将此返回的项目转换为manifest数据类型。

其余的是,我希望,不言自明:

(ManifestItem*)

答案 1 :(得分:0)

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

1)调用currentHtml()

2)将清单转换为指向ManifestItem的指针

3)取消引用#2中的指针并调用其currentItem成员函数

4)取消引用#3并为其fileContent数据成员分配#1中的值 - 否则使用operator =()

答案 2 :(得分:0)

  

((ManifestItem*)manifest->currentItem())->fileContent = currentHtml();在cpp中意味着什么?

这意味着有人做了坏事。

首先,你将问题放在标题中,做得不好。其次,演员阵容是一种可疑的迹象。但是......

您需要知道的第一件事是C ++运算符优先级规则。元素选择运算符->优先于强制转换运算符(type),这意味着我们可以将其重写为

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

按部分分解,

  1. 调用manifest对象的currentItem()成员函数,可能会返回某种类型的指针。鉴于演员阵容,我怀疑currentItem()会返回一个void*指针。
  2. C样式的强制转换操作符将该指针转换为指向ManifestItem对象的指针。
  3. 该对象的fileContent成员设置为调用currentHtml()的结果。