Пожалуйста, помогите мне решить следующую проблему:
У меня есть следующие классы:
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);
};
Реализация очевидна. Я намеревался инициализировать CombinationRule, используя метод Init, чтобы минимизировать дублирование кода. Увы, если я не использую «список инициализации элементов» в каждом конструкторе, компилятор выдает сообщение «ошибка C2512:« ChemicalElement »: не доступен соответствующий конструктор по умолчанию». Есть ли элегантный способ решить эту ошибку вместо использования конструктора по умолчанию или списка инициализации члена?
Кстати: если есть какие-то другие проблемы в определении классов, пожалуйста, добавьте их тоже. Поскольку я снова посещаю C ++, я хочу знать о них.