代码之家  ›  专栏  ›  技术社区  ›  Makogan

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

  •  1
  • Makogan  · 技术社区  · 5 年前

    假设我有课 Member 它既没有默认构造函数,也没有复制构造函数,它是由第三方API创建的,就像使用函数一样。

    我有声明

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

    从上课开始 没有默认构造函数,上述声明不起作用,因为无法初始化成员。

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

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

    1 回复  |  直到 5 年前
        1
  •  1
  •   Acorn    5 年前

    使用 member initializer lists :

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