C++ Fout: Geen overeenkomst voor ‘Operator =’

een probleem bij het toewijzen van een waarde aan een array. Ik heb een klasse die ik heb gemaakt met de naam Treasury. Ik heb een andere klasse gemaakt als TradingBookdie ik een globale reeks van Treasurywil bevatten die toegankelijk is van alle methoden in TradingBook. Hier is mijn header-bestanden voor handelsboek en schatkist:

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);
};

en hier is mijn hoofdcode waar ik de foutmelding krijg:

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

Ik krijg de foutmelding:

Geen overeenkomst voor 'operator='op de lijn 'yieldCurve[i] = new Treasury(treasuries[i]);'

Enig advies?


Antwoord 1, Autoriteit 100%

Dat komt omdat yieldCurve[i]van het type Treasuryis, en new Treasury(treasuries[i]);een verwijzing is naar een Treasury-object. Je hebt dus een type dat niet overeenkomt.

Probeer deze regel te wijzigen:

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

naar dit:

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

Antwoord 2, autoriteit 33%

   Treasury* yieldCurve;

yieldCurveis een verwijzing naar een array van Treasury, niet Treasury*. Zet de newneer op de regel met de fout, of pas de declaratie aan zodat het een array van pointers is.

Other episodes