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 TradingBook
die ik een globale reeks van Treasury
wil 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 Treasury
is, 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;
yieldCurve
is een verwijzing naar een array van Treasury
, niet Treasury*
. Zet de new
neer op de regel met de fout, of pas de declaratie aan zodat het een array van pointers is.