本文介绍了错误C2593:'operator ='是不明确的;编译精细VS6,但我得到那个错误VS10的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我收到以下错误:
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的这个错误。
Compiled perfectly with VS6, but now I'm getting this error with VS10.
推荐答案
您的变量
map保存类型 var
。 sum
不是 var
,所以需要进行转换。
Your variables
map holds values of type var
. sum
isn't a var
, so a conversion needs to be made.
VC6中的 streamsize
类型是一个简单的 int
和 var
The streamsize
type in VC6 is a simple int
and the var
class will convert that to a var
type implicitly.
在VS10中, var
c $ c> streamsize 是一个 __ int64
,你没有隐式转换为 var
for。
In VS10, streamsize
is an __int64
, which you have no implicit conversion to a var
for.
这篇关于错误C2593:'operator ='是不明确的;编译精细VS6,但我得到那个错误VS10的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!