本文介绍了错误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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-02 11:08