如何在单个语句中拥有指向默认结构对象的指针?
Posted
技术标签:
【中文标题】如何在单个语句中拥有指向默认结构对象的指针?【英文标题】:How can I have a pointer to default struct object in a single statement? 【发布时间】:2021-12-08 09:45:24 【问题描述】:我可以先获取一个默认结构对象,然后再获取一个指向它的指针。 但我怀疑必须有一些优雅的方式来做到这一点;可能在一个语句中。
auto defaultStructObject = SomeStruct;
auto pointerToDefaultStructObject = &defaultStructObject;
【问题讨论】:
使用右值引用 && 您是否要删除auto defaultStructObject = SomeStruct;
这一行而只需要一个指针?
SomeStruct;
是一个右值,你需要延长它的生命,否则它将在完整表达式结束时被销毁;如果你能接受它的地址,你会得到一个悬空指针。您可以使用 rvalue 引用或 const 引用来延长它的生命周期,例如 auto && refToDefaultStructObject = SomeStruct;
如果你的类没有 arg 构造函数,你可以这样做 auto* pointerToMyStructObj = new MyStruct;
【参考方案1】:
auto defaultStructObject = SomeStruct, *pointerToDefaultStructObject = &defaultStructObject;
Online Demo
【讨论】:
【参考方案2】:您可能可以使用 main 函数中的第一行。
class MyClass
public:
MyClass() ;
void Print() const std::cout << "hello world \n";
;
int main()
auto* pObj = new MyClass();
pObj->Print();
return 0;
【讨论】:
以上是关于如何在单个语句中拥有指向默认结构对象的指针?的主要内容,如果未能解决你的问题,请参考以下文章