我知道这(*x).y
就像x->y
在 c++ 中一样,但是这段代码是为我准备的。任何人都可以帮助我或给我一个参考吗?
问问题
59 次
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 回答