C++ Error: No match for 'operator='
Avoir un problème lors de l'affectation d'une valeur à un tableau. J'ai une classe que j'ai créé et appelé Treasury
. J'ai créé une autre classe appelée TradingBook
qui je veux contenir un tableau global de Treasury
qui peut être accessible à partir de toutes les méthodes dans TradingBook
. Voici mes fichiers d'en-tête pour TradingBook et de la Trésorerie:
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);
};
Et voici mon code principal où j'obtiens le message d'erreur:
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^^^^^^^^^^^^^^
}
}
J'obtiens l'erreur:
Pas de match pour
'operator='
sur la ligne'yieldCurve[i] = new Treasury(treasuries[i]);'
Des conseils?
- C'est exactement le même problème que vous demandé hier. La seule différence est que cela se passe avec une autre variable. C'est peut-être temps d'investir dans une bonne C++ livre, votre compréhension des tableaux et pointeurs qui pourraient être améliorés.
Vous devez vous connecter pour publier un commentaire.
C'est parce que
yieldCurve[i]
est de typeTreasury
, etnew Treasury(treasuries[i]);
est un pointeur vers uneTreasury
objet. Vous avez donc une incompatibilité de type.Essayez de changer cette ligne:
à ceci:
yieldCurve
est un pointeur vers un tableau deTreasury
, pasTreasury*
. Déposer lesnew
à la ligne avec l'erreur, ou de la modification de la déclaration pour être un tableau de pointeurs.