1

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 コンパイラ。

4

1 に答える 1

-2

errMsg = UtlString...は初期化であるため、コンパイラは自由にコピー コンストラクタを考慮します。そこから効果的な代入演算子が得られますUtlString::operator=(const UtlString&)

于 2012-04-24T12:58:24.673 に答える