声明没有默认构造函数或复制构造函数的成员变量

时间:2019-05-05 22:11:19

标签: c++ class constructor

假设我有一个类Member,它既没有默认构造函数,也没有副本构造函数,它是由第三方API和函数一起创建的。

我有声明

Member CreateMember(string str);

class MyClass {
    Member my_member;
public:
    MyClass(){
       my_member = CreateMember("I am a parameter");
    }
}

由于类Member没有默认构造函数,因此上述声明无效,因为无法初始化成员。

我也不能将其声明为指针,因为缺少复制构造函数意味着我无法调用new Member(my_member)

我在这里不知所措,有什么建议吗?

1 个答案:

答案 0 :(得分:1)

使用member initializer lists

Member CreateMember(string str);

class MyClass {
    Member my_member;
public:
    MyClass()
    : my_member(CreateMember("I am a parameter"))
    {
    }
};