0

我知道这(*x).y就像x->y在 c++ 中一样,但是这段代码是为我准备的。任何人都可以帮助我或给我一个参考吗?

4

3 回答 3

2

总的来说,使用变量名称中的术语,它将currentHtml()函数的返回值存储到manifest'scurrentItemfileContent变量中。

分解它:

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

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

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

->fileContent = currentHtml();
于 2012-09-13T23:09:43.757 回答
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()
于 2012-09-14T00:01:29.407 回答
0
((ManifestItem*)manifest->currentItem())->fileContent = currentHtml();

1) 调用 currentHtml()

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

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

4) 取消引用 #3 并将 #1 中的值分配给它的 fileContent 数据成员——或者使用 operator=()

于 2012-09-13T23:12:42.710 回答