Конвертация из класса Money в Int Fails - PullRequest
0 голосов
/ 07 мая 2018

Ошибка компиляции: 'initializing': невозможно конвертировать из 'int' в 'Money' Файл: genericarray.h Линия: 13

Это моя основная функция

int main()
{
    genericArray<Money>m3(5);
    Money d(-1, 89);
    Money a(10, 5);
    Money b(10, 5);
    Money c(43, 7);
    Money k(50, 6);
    Money m(10, 20);
    Money bonus(5, 0);

    m3.elements[0] = a;
    m3.elements[1] = b;
    m3.elements[2] = c;
    m3.elements[3] = k;
    m3.elements[4] = m;

    m3.total = m3.sum();
    m2.total = m2.sum();
    m1.total = m1.sum();

    return 0;
}

Это перегрузка моего оператора присваивания класса Money и самого класса Money

class Money
{
private:
    int lira;
    int kurus;
public:
    Money() { lira = 0; kurus = 0; }
    Money(int a, int b);
    ~Money() {}
    void operator=(const Money& money2) { this->lira = money2.lira; this->kurus = money2.kurus; }
    void operator=(int l) { this->lira = l; this->kurus = 0; }

Это мой класс genericArray с функцией sum ()

template <class Type> 
class genericArray
{
private:
int size;
public:
Type* elements;
Type total;
Type sum()
{
    Type sumAll = 0;
    for (int i = 0; i < size; i++)
    {
        sumAll += elements[i];
    }
    if (sumAll > 100)
        sumAll += 5;
    return sumAll;
}
genericArray() { elements = NULL; size = 0; }
genericArray(int arrSize) { elements = new Type[arrSize]; size = arrSize; }
~genericArray() { delete[] elements; }
};

1 Ответ

0 голосов
/ 10 мая 2018

Написание нового конструктора с одним параметром int решило проблему:

Money(const int a) 
{
    if (a < 0) throw "The amount of money can not be below zero!";
    this->lira = a; 
    this->kurus = 0; 
}

Дело в том, что

Type sumAll = 0;

вызывает только конструктор, который принимает только 1 int вместо вызова конструктора по умолчанию и оператора присваивания.

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