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

Перегрузка операторов и абстрактный класс - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Скип-список http://www.cyberforum.ru/cpp-beginners/thread970941.html
не получается исправить ошибку. Кто знает решение? /* skip list */ #include <stdio.h> #include <stdlib.h> /* define data-type and compare operators here */ typedef int T; /* type of item to be stored */ #define compLT(a,b) (a < b) #define compEQ(a,b) (a == b)
C++ Задача на циклы. Дано натуральное n. Вычислить Добрый всем день! Необходима помощь с решением этого цикла: Дано натуральное n. Вычислить: 1/22 + 1/42 + ... + 1/(2n) n . http://www.cyberforum.ru/cpp-beginners/thread970935.html
Как из программы считать данные с сайта? C++
К примеру: при запуске программы нужно получить данные с сайта прогноза погоды(допустим влажность,давление,ветер).Как это сделать?Есть какие-либо функции?
Перевод с Pascal на C++ C++
Помогите с программой нужно переделать ее на C ++ builder Program F_An; uses CRT; type complex = record re, im: real; end; type Opis_comp = record nam:char;a,b:integer; par: real; end; const n=2; Ninp=1; Nout=2; Nf=21; f1=0.01; f2=100; Zapis: array of Opis_comp= ((nam: 'R'; a:1; b:2; par:1),
C++ IntelliSense: требуется выражение http://www.cyberforum.ru/cpp-beginners/thread970912.html
Подскажите, почему выдает ошибку? Объявление textColor: SDL_Color textColor;
C++ Ошибка при наследовании класса Всем доброго времени суток, пытаюсь отнаследовать класс, вот такой код я смастерил: #ifndef CLASS_H_ #define CLASS_H_ class stack { protected: int *turn; int count, size; public: подробнее

Показать сообщение отдельно
Oberyn Martell
5 / 5 / 0
Регистрация: 15.05.2013
Сообщений: 36
08.10.2013, 14:34  [ТС]     Перегрузка операторов и абстрактный класс
Цитата Сообщение от Мимино Посмотреть сообщение
Для отображения разности перегружать оператор присваивания не обязательно. В чем сложность с перегрузкой оператора "-"? Перегружаете его для каждого класса (у Вас же есть прототипы этих функций) и дальше используете. Вот только метод Operate должен будет либо принимать 2 значения, либо сразу ему отправлять (obj1 - obj2). Или проблема в самой реализации перегрузки оператора?
Собственно, вот перегруженные операторы и метод Operate. Второй объект мы получаем в самом методе с помощью метода SelectObject (выбор объекта из списка).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SymbString SymbString::operator- (SymbString& pObj) { 
    int pos1 = pObj.GetVal().find(val);
    string _name = "Otvet";
    if (pos1 >= 0) { // если вторая строка содержится как подстрока в первой, удаляем ее из первой
        string _val = pObj.GetVal().substr(0, pos1 - 1) +  pObj.GetVal().substr(pos1 + val.size(), std::string::npos);
        SymbString pObj3(_name);
        pObj3.SetVal(_val);
        return pObj3;
    }
    else // иначе просто возвращаем первую строку
        return pObj;
}
 
DecString DecString::operator- (DecString& pObj) {
    for (int i = 0; i < pObj.GetSize(); ++i)
        if (-1 == alph.find_first_of(pObj.GetVal()[i]))
            return 0;
    long int n1 = atol(pObj.GetVal().c_str());
    long int n2 = atol(val.c_str());
    string _name = "Otvet";
    DecString pObj3(_name);
    long int n3 = n2 - n1;
    stringstream ss;
    ss << n3;
    string _val;
    ss >> _val;
    pObj3.SetVal(_val);
    return pObj3;
}
 
void Raznost::Operate(AString* pObj1) {
    Menu menu1(actionList1);
    AString* pObj2 = menu1.SelectObject(factory);
    AString* pObj3 = pObj1 - pObj2; // на этой строке сообщает, что int нельзя использовать для инициал. AString*
    if ((pObj1 - pObj2) && pObj2)
        cout << pObj1->GetVal() << " - " << pObj2->GetVal() << " = " << pObj3;
    else
        cout << "Невозможно выполнить операцию (несовместимые типы)" << endl;
}
Добавлено через 22 часа 22 минуты
Как реализовать метод Operate, чтобы он производил вычисления как с символьными, там и с десятичными строками?
 
Текущее время: 07:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru