Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
5 / 5 / 0
Регистрация: 15.05.2013
Сообщений: 36

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

07.10.2013, 10:56. Показов 5509. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется два класса (DecString и SymbString), наследуемых от абстрактного AString. Можно ли как-нибудь перегрузить операции - и =, чтобы работа с обоими классами осуществлялась в одном методе Operate класса Action?

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
40
41
42
43
44
45
46
47
48
49
class AString {
public:
    virtual ~AString() {};
    virtual const std::string& GetName() const = 0;
    virtual const std::string& GetVal() const = 0;
    virtual const char& GetTip() const = 0;
};
 
class DecString : public AString {
    std::string name;
    std::string val;
    char tip;
public:
    DecString(std::string _name): name(_name), tip('d') {}
    DecString(std::string _name, std::string);
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    void SetVal(std::string _val) { val = _val; }
    int GetSize() const { return sizeof(val); }
    DecString (DecString& pObj);
    DecString& operator= (DecString& pObj);
    DecString operator- (DecString& pObj);
};
 
class SymbString: public AString {
    std::string name;
    std::string val;
    char tip;
public:
    SymbString (std::string _name) : name(_name), tip('s') {}
    SymbString (std::string _name, std::string _val) : name(_name), val(_val), tip('s') {}
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    int GetSize() const { return val.size(); }
    void SetVal(std::string _val) { val = _val; }
    SymbString (SymbString& pObj);
    SymbString& operator= (SymbString& pObj);
    SymbString operator- (SymbString& pObj);
};
 
class Raznost : public Action {
    std::string name;
public:
    Raznost() : name("Разность двух элементов") {}
    void Operate(AString*);
    const std::string& GetName() const { return name; }
};
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2013, 10:56
Ответы с готовыми решениями:

Перегрузка операторов. Класс VECTOR
Задание 1: Разработка класса. Разработайте класс VECTOR. Элемент класса: координаты вектора. Методы: конструктор без...

Перегрузка операторов. Класс String
Зравствуйте! У меня есть вопрос. Реализовать класс String для работы со строками символов. Память под строку выделять автоматически....

Класс многочлен, перегрузка операторов
Здравствуйте. Есть класс многочлен степени n от одной переменной x, задаваемый массивом своих коэффициентов. Для класса перегрузить...

12
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
07.10.2013, 11:10
Что есть класс Action и метод Operate?
1
5 / 5 / 0
Регистрация: 15.05.2013
Сообщений: 36
07.10.2013, 11:17  [ТС]
Цитата Сообщение от Мимино Посмотреть сообщение
Что есть класс Action и метод Operate?
Прощу прощения, не класса Action, а класса Raznost, который в свою очередь является наследуемым от абстрактного класса Action. Он описывает действия, выполняемые с объектами. Например, класс ShowStr показывает значение строки:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Action {
public:
    virtual ~Action() {}
    virtual void Operate(AString*) = 0;
    virtual const std::string& GetName() const = 0;
};
 
class ShowStr : public Action {
    std::string name;
public:
    ShowStr() : name("Показать символьное значение") {}
    void Operate(AString*);
    const std::string& GetName() const { return name; }
};
 
void ShowStr::Operate(AString* pObj) {
    cout << pObj->GetName() << ": ";
    cout << pObj->GetVal() << endl;
    cin.get();
}
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
07.10.2013, 11:45
Для отображения разности перегружать оператор присваивания не обязательно. В чем сложность с перегрузкой оператора "-"? Перегружаете его для каждого класса (у Вас же есть прототипы этих функций) и дальше используете. Вот только метод Operate должен будет либо принимать 2 значения, либо сразу ему отправлять (obj1 - obj2). Или проблема в самой реализации перегрузки оператора?
0
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, чтобы он производил вычисления как с символьными, там и с десятичными строками?
0
5 / 5 / 0
Регистрация: 15.05.2013
Сообщений: 36
11.10.2013, 10:52  [ТС]
все еще актуально
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.10.2013, 14:58
Oberyn Martell,
Попробуй создать в самом классе Action виртуальный метод virtual operator-(){};
Если не заработает попробуй явно привести тип pObj1 к pObj2 dynamic_cast<pObj2*>(pObj1)

И вообще я токо от досмотрел ты просто инт присваиваешь
Попробуй эту строчку AString* pObj3 = pObj1 - pObj2; заменить на: AString* pObj3 = &((*pObj1) - (*pObj2)); как то так
1
5 / 5 / 0
Регистрация: 15.05.2013
Сообщений: 36
11.10.2013, 17:08  [ТС]
Уже все сделал. Спасибо за помощь
0
0 / 0 / 0
Регистрация: 29.01.2012
Сообщений: 21
18.10.2013, 15:06
Помогите решить задачу.

программу, демонстрирующую работу с объектами двух типов: SymbString(символьная строка) и DecString(десятичная строка), для чего создать систему соответсвующих классов. Каждый объект должен иметь идентификатор(в виде произвольной строки символов)и одно или несколько полей для хранения состояния объекта(один класс является потомков другого).
Клиенту(функции main)должны быть доступны следующие основные операции(методы): создать объект, удалить объект, показать значение объекта, выполнение операции operator +(T s1, T s2), где Т - это либо SymbString, либо DecString. Операции по созданию и удалению объектов инкапсулировать в классе Factory. Предусмотреть меню, позволяющее продемонстрировать заданные операции.
При необходимости в разрабатываемые классы добавляются дополнительные методы(например, конструктор копирования, операция присваивания и т.п)для обеспечения надлежащего функционирования этих классов.

operator +(T s1, T s2)
//для объектов SymbString - конкатенация строк s1 и s2;
//для объектов прочих классов - сложение соответсвующих численных значений с последующим преобразованием к типу Т
0
5 / 5 / 0
Регистрация: 15.05.2013
Сообщений: 36
18.10.2013, 20:37  [ТС]
Цитата Сообщение от Веолета Посмотреть сообщение
Помогите решить задачу.

программу, демонстрирующую работу с объектами двух типов: SymbString(символьная строка) и DecString(десятичная строка), для чего создать систему соответсвующих классов. Каждый объект должен иметь идентификатор(в виде произвольной строки символов)и одно или несколько полей для хранения состояния объекта(один класс является потомков другого).
Клиенту(функции main)должны быть доступны следующие основные операции(методы): создать объект, удалить объект, показать значение объекта, выполнение операции operator +(T s1, T s2), где Т - это либо SymbString, либо DecString. Операции по созданию и удалению объектов инкапсулировать в классе Factory. Предусмотреть меню, позволяющее продемонстрировать заданные операции.
При необходимости в разрабатываемые классы добавляются дополнительные методы(например, конструктор копирования, операция присваивания и т.п)для обеспечения надлежащего функционирования этих классов.

operator +(T s1, T s2)
//для объектов SymbString - конкатенация строк s1 и s2;
//для объектов прочих классов - сложение соответсвующих численных значений с последующим преобразованием к типу Т
SymbString.h :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include "AString.h"
 
class SymbString: public AString {
    std::string name;
    std::string val;
    char tip;
public:
    SymbString (std::string _name) : name(_name), tip('s') {}
    SymbString (std::string _name, std::string _val) : name(_name), val(_val), tip('s') {}
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    int GetSize() const { return val.size(); }
    void SetVal(std::string _val) { val = _val; }
    SymbString (SymbString& pObj);
    SymbString& operator= (SymbString& pObj);
    SymbString operator+ (SymbString& pObj);
};
SymbString.cpp :
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
#include "SymbString.h"
#include <iostream>
#include <string>
 
using namespace std;
 
SymbString::SymbString (SymbString& pObj) {
    name = pObj.name;
    val = pObj.val;
    tip = pObj.tip;
}
 
SymbString& SymbString::operator= (SymbString& pObj) {
    name = pObj.GetName();
    val = pObj.GetVal();
    tip = pObj.GetTip();
    return *this;
}
 
SymbString SymbString::operator+ (SymbString& pObj) {
    string _val = val + pObj.GetVal();
    SymbString pObj3 ("Otvet", _val);
    return pObj3;
}
DecString.h :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <string>
#include "AString.h"
 
const std::string alph = "0123456789";
bool IsDecStrVal(std::string);
 
class DecString : public AString {
    std::string name;
    std::string val;
    char tip;
public:
    DecString(std::string _name): name(_name), tip('d') {}
    DecString(std::string _name, std::string);
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    void SetVal(std::string _val) { val = _val; }
    int GetSize() const { return sizeof(val); }
    DecString (DecString& pObj);
    DecString& operator= (DecString& pObj);
    DecString operator+ (DecString& pObj);
};
DecString.cpp :
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
40
41
42
43
44
45
46
#include "DecString.h"
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
bool IsDecStrVal(string _str) {
    for (int i = 0; i < _str.size(); ++i)
        if (-1 == alph.find_first_of(_str[i]))
            return false;
    return true;
}
 
DecString::DecString(string _name, string _val) :
    name(_name), tip('d') {
        if (IsDecStrVal(_val))
            val = _val;
}
 
DecString::DecString (DecString& pObj) {
    name = pObj.name;
    val = pObj.val;
    tip = pObj.tip;
}
 
DecString& DecString::operator= (DecString& pObj) {
    name = pObj.GetName();
    val = pObj.GetVal();
    tip = pObj.GetTip();
    return *this;
}
 
DecString DecString::operator+ (DecString& pObj) {
    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;
}
Summa.h :
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "Action.h"
#include <string>
 
class Summa : public Action {
    std::string name;
public:
    Summa() : name("Сумма двух элементов") {}
    void Operate(AString*);
    const std::string& GetName() const { return name; }
};
 
extern Summa summa;
Summa.cpp :
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
#include "Summa.h"
#include "Factory.h"
#include "Menu.h"
#include "ShowOct.h"
#include "ShowStr.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include "SymbString.h"
#include "OctString.h"
 
using namespace std;
 
Action* pActs1[] = { &summa };
vector<Action*> actionList1(pActs1, pActs1 + sizeof(pActs1)/sizeof(Action*));
 
void Summa::Operate(AString* pObj1) {
    Menu menu1(actionList1);
    AString* pObj2 = menu1.SelectObject(factory);
    if (dynamic_cast<DecString*>(pObj2) && dynamic_cast<DecString*>(pObj1)) {
        DecString _pObj2 (pObj2->GetName(), pObj2->GetVal());
        DecString _pObj1 (pObj1->GetName(), pObj1->GetVal());
        DecString pObj3 = _pObj1 + _pObj2;
        cout << pObj1->GetVal() << " + " << pObj2->GetVal() << " = " << pObj3.GetVal() << endl;
        return;
    }
    if (dynamic_cast<SymbString*>(pObj2) && dynamic_cast<SymbString*>(pObj1)) {
        SymbString _pObj2 (pObj2->GetName(), pObj2->GetVal());
        SymbString _pObj1 (pObj1->GetName(), pObj1->GetVal());
        SymbString pObj3 = _pObj1 + _pObj2;
        cout << pObj1->GetVal() << " + " << pObj2->GetVal() << " = " << pObj3.GetVal() << endl;
        return;
    }
    else
        cout << "Невозможно выполнить операцию (несовместимые типы)" << endl;
}
 
Summa summa;
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.10.2013, 03:32
Небольшие замечания:
Проверяйте в операторе присваиваний присвоение самому себе,
Имена, начинающиеся с нижнего подчеркивания зарезервированы для разработчиков компиляторов, их лучше не использовать.
Глобальные переменные лучше избегать в любом их виде.
std::string name логичнее было бы засунуть в Action т.к. действие обладает именем. Вдобавок, оно имеет метод GetName, а никакого другого типа, кроме как std::string для name не прогнозируется и смысловая нагрузка у данного свойства всех наследников одинаковая.
имена функций принято писать с маленькой буквы, в отличии от имен класса.
1
0 / 0 / 0
Регистрация: 29.01.2012
Сообщений: 21
19.10.2013, 14:22
Oberyn Martell, Спасибо Вам Большое!!!!
0
0 / 0 / 0
Регистрация: 28.12.2016
Сообщений: 57
28.01.2017, 22:28
Помогите пожалуйста все собрать вместе

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
#include "stdafx.h"
#include <string>
using namespace std;
class AString {
public:
    virtual ~AString() {};
    virtual const std::string& GetName() const = 0;
    virtual const std::string& GetVal() const = 0;
    virtual const char& GetTip() const = 0;
};
 
class DecString : public AString {
    std::string name;
    std::string val;
    char tip;
public:
    DecString(std::string _name): name(_name), tip('d') {}
    DecString(std::string _name, std::string);
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    void SetVal(std::string _val) { val = _val; }
    int GetSize() const { return sizeof(val); }
    DecString (DecString& pObj);
    DecString& operator= (DecString& pObj);
    DecString operator- (DecString& pObj);
};
 
class SymbString: public AString {
    std::string name;
    std::string val;
    char tip;
public:
    SymbString (std::string _name) : name(_name), tip('s') {}
    SymbString (std::string _name, std::string _val) : name(_name), val(_val), tip('s') {}
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    int GetSize() const { return val.size(); }
    void SetVal(std::string _val) { val = _val; }
    SymbString (SymbString& pObj);
    SymbString& operator= (SymbString& pObj);
    SymbString operator- (SymbString& pObj);
};
 
#include <string>
#include "AString.h"
 
class SymbString: public AString {
    std::string name;
    std::string val;
    char tip;
public:
    SymbString (std::string _name) : name(_name), tip('s') {}
    SymbString (std::string _name, std::string _val) : name(_name), val(_val), tip('s') {}
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    int GetSize() const { return val.size(); }
    void SetVal(std::string _val) { val = _val; }
    SymbString (SymbString& pObj);
    SymbString& operator= (SymbString& pObj);
    SymbString operator+ (SymbString& pObj);
};
#include "SymbString.h"
#include <iostream>
#include <string>
 
using namespace std;
 
SymbString::SymbString (SymbString& pObj) {
    name = pObj.name;
    val = pObj.val;
    tip = pObj.tip;
}
 
SymbString& SymbString::operator= (SymbString& pObj) {
    name = pObj.GetName();
    val = pObj.GetVal();
    tip = pObj.GetTip();
    return *this;
}
 
SymbString SymbString::operator+ (SymbString& pObj) {
    string _val = val + pObj.GetVal();
    SymbString pObj3 ("Otvet", _val);
    return pObj3;
}
#include <string>
#include "AString.h"
 
const std::string alph = "0123456789";
bool IsDecStrVal(std::string);
 
class DecString : public AString {
    std::string name;
    std::string val;
    char tip;
public:
    DecString(std::string _name): name(_name), tip('d') {}
    DecString(std::string _name, std::string);
    const std::string& GetName() const { return name; }
    const std::string& GetVal() const { return val; }
    const char& GetTip() const { return tip; }
    void SetVal(std::string _val) { val = _val; }
    int GetSize() const { return sizeof(val); }
    DecString (DecString& pObj);
    DecString& operator= (DecString& pObj);
    DecString operator+ (DecString& pObj);
};
#include "DecString.h"
#include <iostream>
#include <string>
#include <sstream>
 
using namespace std;
 
bool IsDecStrVal(string _str) {
    for (int i = 0; i < _str.size(); ++i)
        if (-1 == alph.find_first_of(_str[i]))
            return false;
    return true;
}
 
DecString::DecString(string _name, string _val) :
    name(_name), tip('d') {
        if (IsDecStrVal(_val))
            val = _val;
}
 
DecString::DecString (DecString& pObj) {
    name = pObj.name;
    val = pObj.val;
    tip = pObj.tip;
}
 
DecString& DecString::operator= (DecString& pObj) {
    name = pObj.GetName();
    val = pObj.GetVal();
    tip = pObj.GetTip();
    return *this;
}
 
DecString DecString::operator+ (DecString& pObj) {
    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;
}
#include "Action.h"
#include <string>
 
class Summa : public Action {
    std::string name;
public:
    Summa() : name("Сумма двух элементов") {}
    void Operate(AString*);
    const std::string& GetName() const { return name; }
};
 
 
extern Summa summa;
#include "Summa.h"
#include "Factory.h"
#include "Menu.h"
#include "ShowOct.h"
#include "ShowStr.h"
#include <iostream>
#include <string>
#include <stdlib.h>
#include "SymbString.h"
#include "OctString.h"
 
using namespace std;
 
Action* pActs1[] = { &summa };
vector<Action*> actionList1(pActs1, pActs1 + sizeof(pActs1)/sizeof(Action*));
 
void Summa::Operate(AString* pObj1) {
    Menu menu1(actionList1);
    AString* pObj2 = menu1.SelectObject(factory);
    if (dynamic_cast<DecString*>(pObj2) && dynamic_cast<DecString*>(pObj1)) {
        DecString _pObj2 (pObj2->GetName(), pObj2->GetVal());
        DecString _pObj1 (pObj1->GetName(), pObj1->GetVal());
        DecString pObj3 = _pObj1 + _pObj2;
        cout << pObj1->GetVal() << " + " << pObj2->GetVal() << " = " << pObj3.GetVal() << endl;
        return;
    }
    if (dynamic_cast<SymbString*>(pObj2) && dynamic_cast<SymbString*>(pObj1)) {
        SymbString _pObj2 (pObj2->GetName(), pObj2->GetVal());
        SymbString _pObj1 (pObj1->GetName(), pObj1->GetVal());
        SymbString pObj3 = _pObj1 + _pObj2;
        cout << pObj1->GetVal() << " + " << pObj2->GetVal() << " = " << pObj3.GetVal() << endl;
        return;
    }
    else
        cout << "Невозможно выполнить операцию (несовместимые типы)" << endl;
}
 
Summa summa;
Ошибка
1 error C1083: Не удается открыть файл включение: AString.h: No such file or directory
2 IntelliSense: не удается открыть источник файл "AString.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 47
3 IntelliSense: не удается открыть источник файл "SymbString.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 65
4 IntelliSense: не удается открыть источник файл "AString.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 90
5 IntelliSense: не удается открыть источник файл "DecString.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 111
6 IntelliSense: не удается открыть источник файл "Action.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 157
7 IntelliSense: не является именем класса или структуры c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 160
8 IntelliSense: не удается открыть источник файл "Summa.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 170
9 IntelliSense: не удается открыть источник файл "Factory.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 171
10 IntelliSense: не удается открыть источник файл "Menu.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 172
11 IntelliSense: не удается открыть источник файл "ShowOct.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 173
12 IntelliSense: не удается открыть источник файл "ShowStr.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 174
13 IntelliSense: не удается открыть источник файл "SymbString.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 178
14 IntelliSense: не удается открыть источник файл "OctString.h" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 179
15 IntelliSense: идентификатор "Action" не определен c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 183
16 IntelliSense: vector не является шаблоном c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 184
17 IntelliSense: идентификатор "Action" не определен c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 184
18 IntelliSense: требуется выражение c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 184
19 IntelliSense: требуется круглая скобка ")" c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 184
20 IntelliSense: идентификатор "Menu" не определен c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 187
21 IntelliSense: идентификатор "factory" не определен c:\Users\Андрей\Documents\Visual Studio 2012\Projects\ConsoleApplication213\Cons oleApplication213\ConsoleApplication213. cpp 188
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.01.2017, 22:28
Помогаю со студенческими работами здесь

Класс описывающий матрицу. Перегрузка операторов
Условие задачи: Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк...

Перегрузка операторов, если класс содержит массив
Добрый день, требовалось написать прогу, которая выводит количество повторений элементов в массиве, причем сделать это требовалось с...

Перегрузка операторов сравнения и разницы. Класс String
Всем привет. задание написано в начале программы. Кто может помочь с исправлением -, &lt;, &gt; Мне только удалось перегрузить +, в...

Создать класс, для хранения целого числа. Перегрузка операторов
Создать класс, для хранения целого числа. Перегрузить операторы «+», «-», «*» и «/» для совершения соответствующих операций с числами....

Класс строк, перегрузка операторов. Как вернуть объект класса
Коротко: # include &quot;MyString.h&quot; void main () { My_String Address; Address = &quot;Link&quot;; Res = Address + &quot;OoO&quot;; } # ifndef...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru