私はこのクラスを持っています
class Field
{
public:
Field();
~Field();
Field(const std::string& nameP,
const int idP ,
const std::map<int,Field*> sequence=std::map<int,Field*>(),
const std::string& constval="",
const std::string& presP="");
std::string f_name;
int f_id;
std::string f_presence;
std::string f_const;
std::map<int,Field*> f_set;
};
問題は、私の Class Field が他のフィールドのセットである可能性があるため、 map を使用したか、定数値である可能性があるため const を使用したか、どちらでもない可能性があるため、3 つの異なるコンストラクターを使用したことです。コンパイラは、「オーバーロードされたフィールドへのC ++あいまいな呼び出し...候補は...)」と言って拒否するので、すべての可能性を1つにまとめようとしましたが、コンパイラは最後の3つのフィールド以降、再び大量のエラーを出しました。 3 つの可能なコンストラクターを取得するにはどうすればよいか教えてください ?? PS: このあいまいな呼び出しについての答えを知る必要があるので、継承の提案はしないでください! ps エラーの原因となった前のコードはこれです
class Field
{
public:
Field();
~Field();
Field(const std::string& typeP,
const std::string& nameP,
const int idP ,
const std::string& presP="");
Field(const std::string& typeP,
const std::string& nameP,
const int idP ,
const std::string& constval,
const std::string& presP="");
Field(const std::string& typeP,
const std::string& nameP,
const int idP ,
const std::map<int,Field*> sequence ,
const std::string& presP="");
/// field attributes
std::string f_type;
std::string f_name;
int f_id;
std::string f_presence;
std::string f_const;
std::map<int,Field*> f_set;
};