【问题标题】: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{};

标签: c++ pointers struct


【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多