声明既没有默认构造函数也没有复制构造函数的成员变量
Posted
技术标签:
【中文标题】声明既没有默认构造函数也没有复制构造函数的成员变量【英文标题】:Declare member variables that do not have a default constructor nor a copy constructor 【发布时间】:2019-05-05 22:11:18 【问题描述】:假设我有一个既没有默认构造函数也没有复制构造函数的类 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】:使用member initializer lists:
Member CreateMember(string str);
class MyClass
Member my_member;
public:
MyClass()
: my_member(CreateMember("I am a parameter"))
;
【讨论】:
以上是关于声明既没有默认构造函数也没有复制构造函数的成员变量的主要内容,如果未能解决你的问题,请参考以下文章