1. ホーム
  2. その他

[解決済み】C++エラー。operator='に一致するものがない。

2022-01-17 11:17:10

質問

配列に値を代入する際に問題があります。というクラスを作成したのですが TradingBook . という別のクラスを作成しました。 TradingBook のグローバル配列を格納したい。 Treasury のすべてのメソッドからアクセスできるようになります。 class Treasury{ public: Treasury(SBB_instrument_fields bond); Treasury(); double yieldRate; short periods; }; class TradingBook { public: TradingBook(const char* yieldCurvePath, const char* bondPath); double getBenchmarkYield(short bPeriods) const; void quickSort(int arr[], int left, int right, double index[]); BaseBond** tradingBook; int treasuryCount; Treasury* yieldCurve; int bondCount; void runAnalytics(int i); }; . 以下は、TradingBookとTreasuryのヘッダーファイルです。

TradingBook::TradingBook(const char* yieldCurvePath, const char* bondPath)
{
    //Loading Yield Curve
    // ...
    yieldCurve = new Treasury[treasuryCount];

    int periods[treasuryCount];
    double yields[treasuryCount];
    for (int i=0; i < treasuryCount; i++)
    {
        yieldCurve[i] = new Treasury(treasuries[i]);
        //^^^^^^^^^^^^^^^^LINE WITH ERROR^^^^^^^^^^^^^^
    }
}

そして、これが私のメインコードで、エラーが発生しているところです。

'yieldCurve[i] = new Treasury(treasuries[i]);'

エラーが発生するのですが。

に一致するものはありません。 No match for 'operator='  行に yieldCurve[i]

何かアドバイスはありますか?

どのように解決するのですか?

それは Treasury は、タイプ new Treasury(treasuries[i]); であり、かつ Treasury へのポインタです。 yieldCurve[i] = new Treasury(treasuries[i]); オブジェクトを作成します。つまり、型の不一致があるわけです。

この行を変更してみてください。

yieldCurve[i] = Treasury(treasuries[i]);

をこれに変更します。

yieldCurve[i] = Treasury(treasuries[i]);