c++ - 错误 C2593 : 'operator =' is ambiguous; Compiled fine on VS6, 但我在 VS10 上收到该错误

标签 c++

我收到以下错误:

1>c:\documents and settings\krzys\desktop\desktop icons\ollydbg\plugins\odbgscript\OllyLangCommands.cpp(3602): error C2593: 'operator =' is ambiguous
1>          c:\documents and settings\krzys\desktop\desktop icons\ollydbg\plugins\odbgscript\var.h(45): could be 'var &var::operator =(const long double &)'
1>          c:\documents and settings\krzys\desktop\desktop icons\ollydbg\plugins\odbgscript\var.h(42): or       'var &var::operator =(const int &)'
1>          c:\documents and settings\krzys\desktop\desktop icons\ollydbg\plugins\odbgscript\var.h(41): or       'var &var::operator =(const ulong &)'
1>          while trying to match the argument list '(var, std::streamsize)'

在此代码处:

map<string, var> variables;
streamsize sum = 0;

if (sum) {
    variables["$RESULT"] = sum;  // Error 1
    return true;
}

class var
{
public:
 ulong dw;
 string str;
 long double flt;
 vtype vt;
 bool isbuf;
 int size;

 var();
 var(const var& rhs); 
 var(string& rhs); 
 var(ulong rhs); 
 var(int rhs); 
 var(long double rhs); 

 // less than zero this < rhs
 // zero this == rhs 
 // greater than zero this > rhs 
 int compare(const var& rhs) const; 
 int compare(const string& rhs) const; 
 int compare(const ulong& rhs) const; 
 int compare(const int& rhs) const; 
 int compare(const long double& rhs) const; 

 string strclean(void);
 string strbuffhex(void);
 string strbuff(void);

 var& operator=(const var& rhs);
 var& operator=(const string& rhs);
 var& operator=(const ulong& rhs); // Error 4
 var& operator=(const int& rhs); // Error 3
 var& operator=(unsigned short& rhs);
 var& operator=(unsigned char& rhs);
 var& operator=(const long double& rhs); // Error 2

 var& operator+=(const var& rhs);
 var& operator+=(const string& rhs);
 var& operator+=(const ulong& rhs);
 var& operator+=(const int& rhs);
 var& operator+=(const long double& rhs);

 void resize(ulong newsize);

};

使用 VS6 完美编译,但现在使用 VS10 时出现此错误。

最佳答案

检查总和的类型和变量的方法。他们有可能在从 VS6 到 VS2010 的转换中添加了新的 operator= 重载。

关于c++ - 错误 C2593 : 'operator =' is ambiguous; Compiled fine on VS6, 但我在 VS10 上收到该错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848527/

相关文章:

c++ - 链接器错误 : already defined

C++ 对给定列表中的每种类型执行一个操作

c++ - 检查 ignore() 的值

c++ - DoEvents 等同于 C++?

c++ - 快速排序不起作用(段错误)

c++ - 使用默认函数模板参数的意外重载决议

c++ - 更改已编译二进制文件的部分

c++ - "old"C 特性可能比新的 C++ 特性更好的情况?

c++ - 在C++中输入无效时再次提示

c++ - 为什么我的类(class)没有链接?