在为数组赋值时遇到问题。我有一个名为Treasury
的课程。我创建了另一个名为TradingBook
的类,我想要包含一个Treasury
的全局数组,可以从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::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^^^^^^^^^^^^^^
}
}
我收到错误:
行
'operator='
'yieldCurve[i] = new Treasury(treasuries[i]);'
不匹配
有什么建议吗?
答案 0 :(得分:10)
这是因为yieldCurve[i]
的类型为Treasury
,而new Treasury(treasuries[i]);
是指向Treasury
对象的指针。所以你的类型不匹配。
尝试更改此行:
yieldCurve[i] = new Treasury(treasuries[i]);
到此:
yieldCurve[i] = Treasury(treasuries[i]);
答案 1 :(得分:3)
Treasury* yieldCurve;
yieldCurve
是指向Treasury
数组的指针,而不是Treasury*
。将new
放在有错误的行,或修改声明,使其成为一个指针数组。