问题描述
class ClassA{
public:
explicit(std::string token) : _token(token);
inline const std::string& getToken() const{
return _token;
}
// Other functions
// ...
private:
const std::string _token;
// other members
// ...
};
我试图让这个班级成为另一个班级的成员。但是,由于 ClassA
需要带有输入参数的构造函数,是否有解决方法来定义另一个获取 token
并创建对象的类?
class ClassB{
ClassB(std::string token) : m_TOKEN(token){ setBot(); };
void setBot(){
m_classA(m_TOKEN); // I kNow this does not work,it is just to illustrate my question.
};
private:
std::string m_TOKEN;
ClassA m_classA;
}
解决方法
如所写,您的 ClassB
将不起作用,因为 ClassA
没有默认构造函数,因此您必须在 {{1} 的成员初始化列表中初始化 m_classA
} 的构造函数。如果您希望 ClassB
重置 setBot()
,则必须构造一个新的 m_ClassA
对象。
ClassA
否则,如果您不想在构造函数的成员初始化列表中初始化 class ClassB{
ClassB(std::string token) : m_TOKEN(token),m_classA(token) { };
void setBot(){
m_classA = ClassA(m_TOKEN);
};
private:
std::string m_TOKEN;
ClassA m_classA;
}
,则必须改为动态构造 m_ClassA
。
m_ClassA