用于解除引用类成员变量的C++语法

bad*_*erm 5 c++ syntax pointers class

这更像是一个语法优雅的问题,但我正在学习C++并使用指针.如果我有一个类,Car,我可以创建一个指向该类的新实例的指针

Car * Audi = new Car;
Run Code Online (Sandbox Code Playgroud)

如果该类具有成员变量权重(例如unsigned int),我可以使用其中任何一个来访问它

(*Audi).weight
Run Code Online (Sandbox Code Playgroud)

要么

Audi->weight
Run Code Online (Sandbox Code Playgroud)

如果该类有一个成员变量age,它本身就是一个指针,我可以用它们访问它

*((*Audi).age)
Run Code Online (Sandbox Code Playgroud)

要么

*(Audi->age)
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以解除指针的这两种方式(肯定不是特别复杂)?我想想

Audi->*age
Run Code Online (Sandbox Code Playgroud)

会工作,但唉它没有.

(我很欣赏访问者通常更喜欢,我只是感兴趣.)

fre*_*low 5

*(Audi->age)
Run Code Online (Sandbox Code Playgroud)

您不需要括号,因为前缀运算符的优先级非常低:

*Audi->age
Run Code Online (Sandbox Code Playgroud)


Lin*_*ios 0

从语法上讲,不,除非您想编写一个函数或宏来执行此操作。你可以,但如果你问我,就使用访问器。另外,您不想在堆上分配大多数对象。只需将它们声明为type foo;ortype foo = type()并让它们位于堆栈中即可。除非有特定的充分理由,否则不应通过动态分配将内容放入堆上,因为动态分配的开销很高。