我有这门课
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++ 对重载字段的歧义调用......候选人是......)所以现在我试图将所有可能性放在一个中,但编译器再次给我带来了自我最后三个字段以来的大量错误。所以任何人可以告诉我应该怎么做才能让我的三个可能的构造函数?? 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;
};