Форум программистов, компьютерный форум CyberForum.ru

Перегрузка оператора += - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ условие http://www.cyberforum.ru/cpp-beginners/thread357010.html
Ответ скорее всего прост,но не могу придумать никак #include <stdio.h> #include <conio.h> #include <locale.h> int fact(int n)//в цикле со счётчиком умножают переменную на счетчик, который уменьшается на 1 со значения = число факториал которого находят до 1 { int result=1;
C++ Расчитать значение функии f(x) по соответсвующей формуле. Добрый день, вот моё задание: Составьте алгоритм программы, которая принимает от пользователя значение x и в зависимости от его значения, расчитывет значение функии f(x) по соответсвующей формуле. Проверка того, что функция не определена при введенном значении х, не обязательна. Если введённое число подходит под условие 1, то расчитывается f1 формуле, если под условие 2, то по f2 формуле, если... http://www.cyberforum.ru/cpp-beginners/thread357006.html
Создание динамического массива C++
const int Num=5; const int SIZE=4096 * Num; SHORT Buf; как такое заменить, если Num- инициализируется при загрузке программы, читается из файла. int Num; int SIZE=4096 * Num; SHORT* Buf = new SHORT;
C++ Компиляторы
Скажите пожалуйста какие сейчас есть компиляторы для С++ и какой из них на сегодняшний день самый распространённый и широкоиспользуемый?
C++ сумма соседних членов последовательности http://www.cyberforum.ru/cpp-beginners/thread356953.html
Даны числа а1, а2, a(n) Известно, что а1>0 и что среди а2, а3, a(n) есть хотя бы одно отрицательное число. Пусть а1, a2, an - члены данной последовательности, предшествующие первому отрицательному члену (n заранее не известно). Найти min(a1+a2,a2+a3,a(n-1)+a(n)). Без использования массивов. Прошу помощи.
C++ Вычитаем процент от числа. Вот фрагмент программки... weight = growth - 110; ideal_weight = weight - (weight * (10/100)); cout << Rus("Ваш идеальный вес ") << ideal_weight; cout << Rus(" кг.") << endl; Здесь вычисляется идеальный вес. Мне нужно вычесть из weight 10%. Но при лбом значении growth выдается одно и тоже значение для ideal_weight (5.31691е + 036). Хотя при growth 173 ideal_weight должен... подробнее

Показать сообщение отдельно
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
27.09.2011, 16:53  [ТС]
И ещё раз по поводу моей ошибки: minigw пишет что нет кандидата на вызов +=
и дальше пишет кандидат 1 += для Vec4 и кандидат 2 для += это float, мне бы надо чтобы вызывался 1ый кандидат так как он вообще-то и подходит по семантике и вроде всё хорошо, но компилятору же что-то не нравится ...
Хотя ... ошибка явно где-то в перегрузке в Vec4 - я попробовал в Main проделать следующее:
C++
1
2
3
4
    vector<Vec4> elem;
    elem.resize(4);
    for (size_t i=0;i<elem.size();i++)
     elem[i]+=right[i];
и код тоже не скомпилировался, ну чтоже, круг поиска ошибки стал уже

Добавлено через 1 минуту
Deviaphan, тогда это не работает
C++
1
2
3
4
5
6
7
8
9
    Vec4 operator+(Vec4 &right)
    {
        Vec4 temp(*this);
        for (size_t i=0;i<elem.size();i++)
        {
            temp+=right;
        }
        return temp; // ОШИБКА 50|error: no matching function for call to 'Vec4::Vec4(Vec4&)'|
    }
Добавлено через 41 секунду
Ну и все остальные функции где возвращается temp пишут ошибку + не работает и такой вариант:
C++
1
2
3
4
5
6
        Vec4 operator=(Vec4 &right)
    {
        for(size_t i=0;i<elem.size();i++)
         elem[i]=right[i];
        return *this;
    }
Добавлено через 1 минуту
Хотя последнее это понятно почему, его исправил, но все остальные где возвращается temp теперь не компилируются

Добавлено через 46 секунд
Ну и вообще оно понятно почему они не работают, конструктор копирования то нельзя теперь не явно вызывать, но как же мне тогда поступать?

Добавлено через 5 минут
Deviaphan, Вы не поняли, сделав
C++
1
2
3
4
5
6
    explicit Vec4(const Vec4& right)
    {
        elem.resize(4);
        for (size_t i=0;i<elem.size();i++)
         elem[i]=right[i];
    }
Я же не могу нигде возвращать результат в функции вроде этой
C++
1
2
3
4
5
6
7
8
    Vec4 operator/(float right)
    {
        Vec4 temp(*this);
        for (size_t i=0;i<elem.size();i++)
         temp/=right;
 
        return temp; // ОШИБКА
    }
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru