如何在单个语句中拥有指向默认结构对象的指针?

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;

【讨论】:

以上是关于如何在单个语句中拥有指向默认结构对象的指针?的主要内容,如果未能解决你的问题,请参考以下文章

指向共享对象的指针在拥有它的不同对象中是不同的

如何在单个 SELECT 语句中拥有多个公用表表达式?

如何在 Swift 的单个打印语句中打印多个对象?

在C ++中初始化一个指向结构的指针数组

指向数据类型的单个对象/实例的指针的命名

调用旧版 C API 时,如何在现代 C++ 中正确地将指向结构的指针转换为指向其他结构的指针?