次の問題で私を助けてください:
私は次のクラスを持っています:
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++ を再検討しているので、それらに注意したいと思います。