我知道在 c++ 中
pSomePointer->pValue = (*pSomePointer).pValue
我如何以上述形式表示以下情况:
pSomePointer->pValue->nSubvalue
我知道我们在代码中使用pSomePointer->pValue->nSubvalue,但我只是好奇是否有任何方法可以在c ++中做到这一点。
我尝试过并得到错误的是:
(*pSomePointer).(*pValue) ).nSubvalue;
(*pSomePointer.pValue).nSubvalue;
谢谢你的帮助。
我认为您唯一真正缺少的是->
和.
的优先级高于*
,并且->
和.
的右侧是一个简单的标识符,而不是一般表达式。
有了这个,我们得到
foo->bar->baz
相当于
(foo->bar)->baz
相当于
((*foo).bar)->baz
相当于
(*((*foo).bar)).baz
相当于
(*(*foo).bar).baz
(在去除一对多余的帕伦斯之后(。
您的尝试不起作用,因为.(
是语法错误,并且*pSomePointer.value
解析为*(pSomePointer.value)
(并且您不能在指针上使用.
(。
是的,可以做到。让我将其分为几个步骤:
我们有一个指针pSomePointer
.现在,我们要获取实际对象(pointee(:
*pSomePointer
现在,我们要从这个对象获取成员value
:
(*pSomePointer).value
现在我们需要取消引用我们的表达式,以获得一个由value
指向的对象
*((*pSomePointer).value)
现在我们可以访问对象subvalue
:
(*((*pSomePointer).value)).subvalue
在线查看!
话虽如此,我强烈建议不要使用这种符号。它非常难以阅读并且非常容易出错(尽管这些错误主要是编译器错误(。
操作员->
是程序员的创造者,并为此赞扬了提交者。