我知道这个(*x).y
与c ++中的x->y
类似,但这段代码适用于我。有人可以帮我或者给我一个参考吗?
答案 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();
按部分分解,
manifest
对象的currentItem()
成员函数,可能会返回某种类型的指针。鉴于演员阵容,我怀疑currentItem()
会返回一个void*
指针。ManifestItem
对象的指针。fileContent
成员设置为调用currentHtml()
的结果。