如何访问构造函数try块中的对象字段?

问题描述 投票:0回答:1
class MyClass {
public:
    MyClass::MyClass(std::string name) try 
        : name(std::move(name)),
          someOtherField(WillProbablyThrowSomeException())  {
    } catch (std::runtime_error &e) {
        std::cout << name << " " << e.what() << std::endl;
    }
private:
    std::string name;
    SomeOtherClass someOtherField;
}

我想从构造函数 try 块访问对象的某些字段。如果我只是这样做

name
它将是非法的,因为到达 catch-block 时它已经移动了。如果我这样做
this->name
它也将是非法的,因为该对象处于未定义状态(是吗?)。有没有办法以某种方式访问这个变量?

c++ constructor function-try-block
1个回答
0
投票

如果我这样做

this->name
它也将是非法的,因为该对象处于未定义状态(是吗?)。

不。数据成员一旦初始化就可以使用。

您可以在稍后定义的成员的初始化程序中使用先前定义的成员的值(请记住,决定初始化顺序的是类声明中的顺序,而不是成员初始化程序列表中的顺序)。

© www.soinside.com 2019 - 2024. All rights reserved.