2011-10-17 9 views
2

配列に値を代入するときに問題が発生しました。私はTreasuryと呼ばれるクラスを作成しました。 TradingBookという名前の別のクラスを作成しました。TradingBookのすべてのメソッドからアクセスできるTreasuryのグローバル配列を格納したいと思います。ここに私のヘッダファイルはTradingBookと財務省のためである:C++エラー: 'operator ='に一致するものはありません

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::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^^^^^^^^^^^^^^ 
    } 
} 

私はエラーを取得しています:

No match for 'operator=' on the line 'yieldCurve[i] = new Treasury(treasuries[i]);'

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

+3

これはあなたが[昨日について質問した]まったく同じ問題です(http://stackoverflow.com/questions/7781292/c-when-to-exactly-use-error-base-operand-of-has-non-ポインタ型)。唯一の違いは、それが別の変数で起こっていることです。おそらく、良いC++の本に投資する時が来ました。配列やポインタについての理解が向上するかもしれないからです。 –

答えて

9

はタイプTreasuryであり、new Treasury(treasuries[i]);Treasuryオブジェクトへのポインタです。だから型の不一致があります。

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

これ
yieldCurve[i] = new Treasury(treasuries[i]); 

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

これがあなたの質問に答えるなら、小さなチェックボックスをチェックしてください... – JeremyFromEarth

2
Treasury* yieldCurve; 

yieldCurveTreasuryの配列ではなく、Treasury*へのポインタです。エラーのある行にnewをドロップするか、その宣言をポインタの配列に変更します。

関連する問題