C++代码中出现歧义错误
Getting ambiguity error in C++ code
我们从RogueWave的RWCString
类派生了我们自己的Utility String类。 派生类通过<<
和>>
运算符处理数字到字符串的转换。
下面是此类的声明。
#ifndef UtlString_h
#define UtlString_h 1
#include "platform.h"
#ifdef WIN32
#include "Utilities.h"
#endif
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "rw/cstring.h"
#include "UtlIdentifier.h"
const troint64 BIGBUF_LEN = 56000L ;
class UtlString;
unsigned UtlExport gHashString (const UtlString &);
class UtlExport UtlString : public RWCString
{
public:
UtlString ();
UtlString (char c);
UtlString (char c, size_t N);
explicit UtlString (const char* cs);
UtlString (const char *cs, size_t N);
UtlString (const RWCString& str);
UtlString (RWCSubString& ss);
UtlString (float f);
UtlString (UtlID id);
UtlString (int i);
UtlString (RWSize_T ic);
UtlString (double d);
UtlString (const UtlString& that)
{
this->operator =(that.data());
}
virtual ~UtlString();
operator float () const;
operator UtlID () const;
operator int () const;
float AsFloat () const;
int AsInt () const;
double AsDouble () const;
troint64 AsLong () const;
trouint64 AsULong () const;
UtlString& operator << (const int value);
UtlString& operator << (const troint64 value);
UtlString& operator << (const float value);
UtlString& operator << (const double value);
UtlString& operator << (const char value);
UtlString& operator << (const RWCString& value);
UtlString& operator << (const short value);
UtlString& operator << (const bool value);
UtlString& operator << (const unsigned char value);
UtlString& operator << (const unsigned short value);
UtlString& operator << (const trouint64 value);
UtlString& operator << (const char *value);
UtlString& operator = (const char *value)
{
this->remove(0,this->length());
return *this;
}
};
我在下面的代码中遇到错误。
UtlString errMsg;
errMsg = UtlString("DB Error: ")
+ UtlString(aStatus.message())
+ " ("
+ UtlString(aStatus.errorCode())
+ ") - "
+ UtlString((double)aStatus.vendorError1())
+ ": "
+ UtlString((double)aStatus.vendorError2())
+ ", "
+ UtlString(aStatus.vendorMessage1())
+ ": "
+ UtlString(aStatus.vendorMessage2());
错误:"UtlString::operator=(const char*)"和"UtlString::operator=(const UtlString&)"之间的重载歧义。
您能否在这里帮助我解决此错误。我不明白UtlString::operator=(const UtlString&)
从哪里来。我从未声明过这样的运营商。
使用 CC: Sun C++ 5.8 编译器。
errMsg = UtlString...
是一个初始化,所以编译器可以随意考虑复制构造函数。 这就是您拥有有效赋值运算符UtlString::operator=(const UtlString&)
的地方。
相关文章:
- C++17 中的歧义错误(模板模板参数和默认参数问题)
- 运算符的歧义错误<<自定义 std::ostream 子类中的重载
- 了解函数错误的歧义新声明
- 在C 中,静态成员函数是否继承了?如果是,为什么没有出现歧义错误
- 在 c++ 中使用重载的歧义错误
- 转换 - 错误 E2015,AnsiString(char) 和 AnsiString(short) 之间的歧义
- C++代码中出现歧义错误
- 可变模板和混合的歧义错误
- 错误:"std::copy "之间的重载歧义
- c++操作符string和char*导致歧义错误
- 使用c++ Builder 10 Seattle有很多歧义错误
- c++歧义符号错误
- 函数重载时出现歧义错误
- c++矢量错误,显示变量有歧义-我已经尝试了一切仍然没有希望
- 为什么这两个构造函数一起不会产生歧义错误?
- C2870符号歧义错误
- 由于模板函数声明中存在歧义而导致错误
- 与第三方头文件相关的C++Builder歧义错误
- 模板类相互使用会产生歧义错误
- 错误:对旧声明“double-round(double)”存在歧义