RogueWave のクラスから独自の Utility String クラスを派生させましRWCString
た。派生クラスは、演算子<<
と演算子を介して数値から文字列への変換を処理し>>
ました。
以下は、このクラスの宣言です。
#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 コンパイラ。