我知道这(*x).y就像x->y在 c++ 中一样,但是这段代码是为我准备的。任何人都可以帮助我或给我一个参考吗?
3 回答
2
总的来说,使用变量名称中的术语,它将currentHtml()函数的返回值存储到manifest'scurrentItem的fileContent变量中。
分解它:
((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();
将其分解为部分,
manifest对象的成员currentItem()函数被调用,它可能返回某种类型的指针。鉴于演员表,我怀疑currentItem()返回一个void*指针。- C 风格的强制转换运算符将该指针转换为指向
ManifestItem对象的指针。 - 该
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 回答