【发布时间】:2019-06-09 03:56:02
【问题描述】:
为什么我的重载成员函数只是“模糊”为 char 而不是 int 和 string?
我正在尝试通过重载的 equals() 函数汇集代码,为我的 Char 类创建一个单一代码路径。当我使用 equals 作为 int 和 string 但作为 char 不明确时,它工作正常。
class Char
{
private:
char cData;
int iData;
string sData;
public:
//Mutators:
void equals(char c);
void equals(int c);
void equals(string c);
//Constructors:
Char(char c);
Char(int c);
Char(string c);
};
void Char::equals(char c)
{
cData = c;
}
void Char::equals(int c)
{
iData = c;
}
void Char::equals(string c)
{
sData = c;
}
Char::Char(char c)
{
this->equals(c); //Call to member function 'equals' is ambiguous
}
Char::Char(int c)
{
this->equals(c);
}
Char::Char(string c)
{
this->equals(c);
}
该错误仅发生在 char 上,这很令人困惑,因为 string 可以正常工作。我希望它适用于所有人,因为到目前为止情况就是如此。
【问题讨论】:
-
我应该减少提供的代码吗?
-
您应该发布可用于重现错误的最少代码量。
-
他们说的是你需要提供更多的代码。就像...您能否为我们提供足够的代码以使我们可以得到与您看到的相同的编译错误?这将帮助我们找出问题
-
您的代码在 GCC 和 Clang 中都能正常编译。你用的是什么编译器,什么版本?