Ошибка C ++: нет соответствия для оператора = - PullRequest
3 голосов
/ 17 октября 2011

Возникла проблема при присвоении значения массиву. У меня есть класс, который я создал под названием 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]);'

Любой совет?

Ответы [ 2 ]

10 голосов
/ 17 октября 2011

Это потому, что yieldCurve[i] имеет тип Treasury, а new Treasury(treasuries[i]); - указатель на объект Treasury. Итак, у вас несоответствие типов.

Попробуйте изменить эту строку:

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

к этому:

yieldCurve[i] = Treasury(treasuries[i]);
3 голосов
/ 17 октября 2011
    Treasury* yieldCurve;

yieldCurve - это указатель на массив Treasury, а не Treasury*. Удалите new в строке с ошибкой или измените объявление, чтобы оно было массивом указателей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...