请帮我解决以下问题:
我有以下课程:
class ChemicalElement
{
private:
std::string _name;
void Init(const std::string& name);
public:
ChemicalElement(const std::string& name);
ChemicalElement(const ChemicalElement& ce);
};
class CombinationRule
{
private:
ChemicalElement _ce1;
ChemicalElement _ce2;
void Init(const ChemicalElement& ce1, const ChemicalElement& ce2);
public:
CombinationRule(const ChemicalElement& ce1, const ChemicalElement& ce2);
CombinationRule(const CombinationRule& rule);
};
实现是显而易见的。我打算使用 Init 方法初始化 CombinationRule 以最小化代码重复。唉,如果我不在每个构造函数中使用“成员初始化列表”,编译器会抱怨“错误 C2512:'ChemicalElement':没有适当的默认构造函数可用”。有没有一种优雅的方法来解决这个错误,而不是使用默认构造函数或成员初始化列表?顺便说一句:如果类定义中有任何其他问题,请也添加它。由于我正在重新访问 C++,因此我想了解它们。