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

Cannot convert from 'char *' to 'char' - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
-=Den=-
7 / 7 / 1
Регистрация: 03.04.2011
Сообщений: 171
11.05.2012, 17:26     Cannot convert from 'char *' to 'char' #1
помогите разобраться. код наполовину скопипастенный, на другую половину мной написан. В С++ я не особо, так что сильно не пинайте
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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <conio.h>
#include <string.h>
#include <cstdlib>
#include <locale.h>
 
using namespace std;
class RABOCHIE
{
public:
    RABOCHIE()
    {
        strcpy_s(name, 10, "");
        age = 0;
//      strcpy(sex, '');
    }
    RABOCHIE(char* NAME, int AGE, char SEX)
    {
        strcpy_s(name, 10, NAME);
        age = AGE;
//      strcpy(sex, SEX);
    }
    virtual void show() = 0;
    virtual void input() = 0;
    friend class list;
protected:
    char name[20];
    int age;
    char sex;
    RABOCHIE* next;
};
 
class SLUZHASCHIY:public RABOCHIE
{
public:
    SLUZHASCHIY()
    {
        kol = 0;
    }
    SLUZHASCHIY(int KOL)
    {
        kol = KOL;
    }
    SLUZHASCHIY(char* NAME, int AGE, char SEX, int KOL):RABOCHIE(NAME, AGE, SEX)
    {
        kol = KOL;
    }
    void show()
    {
        cout<<endl<<"Служащий: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" количество подчиненных: "<<kol<<endl;
    }
    void input()
    {
        int s;
        cout<<endl<<"Введите имя служащего: ";
        cin>>name[20];
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите количество подчиненных: ";
        cin>>kol;
        cout<<endl;
    }
protected:
    int kol;
};
class RABOCHIY:public RABOCHIE
{
public:
    RABOCHIY()
    {
        edu[20] = NULL;
    }
    RABOCHIY(char* EDU)
    {
        edu[20] = EDU;
    }
    RABOCHIY(char* NAME, int AGE, char SEX, char* EDU):RABOCHIE(NAME, AGE, SEX)
    {
        edu = EDU;
    }
    void show()
    {
        cout<<endl<<"Рабочий: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" образование: "<<edu<<endl;
    }
    void input()
    {
        int s, k;
        cout<<endl<<"Введите имя рабочего: ";
        cin>>name;
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите образование (0 - среднее-специальное, 1 - высшее): ";
        cin>>k;
        if (k==0)
        {
            edu = "среднее-специально";
        }
        if (k==1)
        {
            edu = "высшее";
        }
        if (k!=0 && k!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>k;
        }
        cout<<endl;
    }
protected:
    char edu[20];
};
 
class INZHENER:public RABOCHIE
{
public:
    INZHENER()
    {
        exper = 0;
    }
    INZHENER(int EXPER)
    {
        exper = EXPER;
    }
    INZHENER(char* NAME, int AGE, char SEX, int EXPER):RABOCHIE(NAME, AGE, SEX)
    {
        exper = EXPER;
    }
    void show()
    {
        cout<<endl<<"Инженер: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" стаж работы: "<<exper<<endl;
    }
    void input()
    {
        int s;
        cout<<endl<<"Введите имя инженера: ";
        cin>>name;
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите стаж работы: ";
        cin>>exper;
        cout<<endl;
    }
protected:
    int exper;
};
 
class SOVMESTITEL:public RABOCHIE
{
public:
    SOVMESTITEL()
    {
        rab_den = 0;
    }
    SOVMESTITEL(int RAB_DEN)
    {
        rab_den = RAB_DEN;
    }
    SOVMESTITEL(char* NAME, int AGE, char* SEX, int RAB_DEN):RABOCHIE(NAME, AGE, SEX)
    {
        rab_den = RAB_DEN;
    }
    void show()
    {
        cout<<endl<<"Совместитеть: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" продолжительность рабочего дня: "<<rab_den<<endl;
    }
    void input()
    {
        int s;
        cout<<endl<<"Введите имя совместителя: ";
        cin>>name;
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите продолжительность рабочего дня: ";
        cin>>rab_den;
        cout<<endl;
    }
protected:
    int rab_den;
};
 
class list
{
private:
    RABOCHIE* begin;
public:
    list()
    {
        begin=0;
    }
    ~list();
    void insert(RABOCHIE*);
    void show();
};
list::~list()
{
    RABOCHIE* A;
    while(begin!=0)
    {
        A=begin;
        begin=begin->next;
        delete A;
    }
}
void list::insert(RABOCHIE* B)
{
    RABOCHIE* A;
    A=begin;
    begin=B;
    B->next=A;
}
void list::show()
{
    RABOCHIE* A;
    A=begin;
    while(A!=0)
    {
        A->show();
        A=A->next;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    list list;
    SLUZHASCHIY *x1;
    RABOCHIY *x2;
    INZHENER *x3;
    SOVMESTITEL *x4;
    x1 = new SLUZHASCHIY;
    x2 = new RABOCHIY;
    x3 = new INZHENER;
    x4 = new SOVMESTITEL;
    x1->input();
    x2->input();
    x3->input();
    x4->input();
    cout<<endl<<"---------------------------------------------------"<<endl;
    list.insert(x4);
    list.insert(x3);
    list.insert(x2);
    list.insert(x1);
    list.show();
    system("pause");
    return 0;
}
выдает такие ошибки:
1>------ Build started: Project: Project, Configuration: Release Win32 ------
1>Compiling...
1>Project.cpp
1>.\Project.cpp(92) : error C2440: '=' : cannot convert from 'char *' to 'char'
1> There is no context in which this conversion is possible
1>.\Project.cpp(96) : error C2440: '=' : cannot convert from 'char *' to 'char [20]'
1> There are no conversions to array types, although there are conversions to references or pointers to arrays
1>.\Project.cpp(128) : error C2440: '=' : cannot convert from 'const char [19]' to 'char [20]'
1> There is no context in which this conversion is possible
1>.\Project.cpp(132) : error C2440: '=' : cannot convert from 'const char [7]' to 'char [20]'
1> There is no context in which this conversion is possible
1>.\Project.cpp(206) : error C2664: 'RABOCHIE::RABOCHIE(char *,int,char)' : cannot convert parameter 3 from 'char *' to 'char'
1> There is no context in which this conversion is possible
1>Build log was saved at "file://c:\WorkSpaces\MSVS\Project\Project\Release\BuildLog.htm"
1>Project - 5 error(s), 0 warning(s)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 17:26     Cannot convert from 'char *' to 'char'
Посмотрите здесь:

C++ E2034 Cannot convert 'char' to 'char *'
C++ cannot convert parameter 1 from 'char' to 'char []'
C++ Cannot convert 'UnicodeString' to 'const char *'
C++ convert char to hex
C++ Cannot convert 'UnicodeString' to 'const char *'
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WeW
 Аватар для WeW
1 / 1 / 0
Регистрация: 25.03.2012
Сообщений: 18
11.05.2012, 17:55     Cannot convert from 'char *' to 'char' #2
ну оно, в принципе, уже компилируется, что просили, то и посмотрел))

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
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <conio.h>
#include <string.h>
#include <cstdlib>
#include <locale.h>
 
using namespace std;
class RABOCHIE
{
public:
    RABOCHIE()
    {
        strcpy_s(name, 10, "");
        age = 0;
//      strcpy(sex, '');
    }
    RABOCHIE(char* NAME, int AGE, char* SEX)
    {
        strcpy_s(name, 10, NAME);
        age = AGE;
//      strcpy(sex, SEX);
    }
    virtual void show() = 0;
    virtual void input() = 0;
    friend class list;
protected:
    char name[20];
    int age;
    char sex;
    RABOCHIE* next;
};
 
class SLUZHASCHIY:public RABOCHIE
{
public:
    SLUZHASCHIY()
    {
        kol = 0;
    }
    SLUZHASCHIY(int KOL)
    {
        kol = KOL;
    }
    SLUZHASCHIY(char* NAME, int AGE, char* SEX, int KOL):RABOCHIE(NAME, AGE, SEX)
    {
        kol = KOL;
    }
    void show()
    {
        cout<<endl<<"Служащий: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" количество подчиненных: "<<kol<<endl;
    }
    void input()
    {
        int s;
        cout<<endl<<"Введите имя служащего: ";
        cin>>name[20];
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите количество подчиненных: ";
        cin>>kol;
        cout<<endl;
    }
protected:
    int kol;
};
class RABOCHIY:public RABOCHIE
{
public:
    RABOCHIY()
    {
        edu[20] = NULL;
    }
    RABOCHIY(char* EDU)
    {
        strcpy(edu,EDU);
        //edu[20] = EDU;
    }
    RABOCHIY(char* NAME, int AGE, char* SEX, char* EDU):RABOCHIE(NAME, AGE, SEX)
    {
       // edu = EDU;
        strcpy(edu,EDU);
    }
    void show()
    {
        cout<<endl<<"Рабочий: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" образование: "<<edu<<endl;
    }
    void input()
    {
        int s, k;
        cout<<endl<<"Введите имя рабочего: ";
        cin>>name;
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите образование (0 - среднее-специальное, 1 - высшее): ";
        cin>>k;
        if (k==0)
        {
            strcat(edu,"среднее-специально");
        }
        if (k==1)
        {
            strcat(edu,"высшее");
        }
        if (k!=0 && k!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>k;
        }
        cout<<endl;
    }
protected:
    char edu[20];
};
 
class INZHENER:public RABOCHIE
{
public:
    INZHENER()
    {
        exper = 0;
    }
    INZHENER(int EXPER)
    {
        exper = EXPER;
    }
    INZHENER(char* NAME, int AGE, char* SEX, int EXPER):RABOCHIE(NAME, AGE, SEX)
    {
        exper = EXPER;
    }
    void show()
    {
        cout<<endl<<"Инженер: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" стаж работы: "<<exper<<endl;
    }
    void input()
    {
        int s;
        cout<<endl<<"Введите имя инженера: ";
        cin>>name;
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите стаж работы: ";
        cin>>exper;
        cout<<endl;
    }
protected:
    int exper;
};
 
class SOVMESTITEL:public RABOCHIE
{
public:
    SOVMESTITEL()
    {
        rab_den = 0;
    }
    SOVMESTITEL(int RAB_DEN)
    {
        rab_den = RAB_DEN;
    }
    SOVMESTITEL(char* NAME, int AGE, char* SEX, int RAB_DEN):RABOCHIE(NAME, AGE, SEX)
    {
        rab_den = RAB_DEN;
    }
    void show()
    {
        cout<<endl<<"Совместитеть: "<<name<<" возраст: "<<age<<" пол: "<<sex<<" продолжительность рабочего дня: "<<rab_den<<endl;
    }
    void input()
    {
        int s;
        cout<<endl<<"Введите имя совместителя: ";
        cin>>name;
        cout<<endl<<"Введите возраст: ";
        cin>>age;
        cout<<endl<<"Введите пол (0 - женский, 1 - мужской): ";
        cin>>s;
        if (s==0)
        {
            sex = 'Ж';
        }
        if (s==1)
        {
            sex = 'М';
        }
        if (s!=0 && s!=1)
        {
            cout<<endl<<"Повторите ввод. Вводите 0 или 1: ";
            cin>>s;
        }
        cout<<endl<<"Введите продолжительность рабочего дня: ";
        cin>>rab_den;
        cout<<endl;
    }
protected:
    int rab_den;
};
 
class list
{
private:
    RABOCHIE* begin;
public:
    list()
    {
        begin=0;
    }
    ~list();
    void insert(RABOCHIE*);
    void show();
};
list::~list()
{
    RABOCHIE* A;
    while(begin!=0)
    {
        A=begin;
        begin=begin->next;
        delete A;
    }
}
void list::insert(RABOCHIE* B)
{
    RABOCHIE* A;
    A=begin;
    begin=B;
    B->next=A;
}
void list::show()
{
    RABOCHIE* A;
    A=begin;
    while(A!=0)
    {
        A->show();
        A=A->next;
    }
}
 
int main()
{
    setlocale(LC_ALL, "Rus");
    list list;
    SLUZHASCHIY *x1;
    RABOCHIY *x2;
    INZHENER *x3;
    SOVMESTITEL *x4;
    x1 = new SLUZHASCHIY;
    x2 = new RABOCHIY;
    x3 = new INZHENER;
    x4 = new SOVMESTITEL;
    x1->input();
    x2->input();
    x3->input();
    x4->input();
    cout<<endl<<"---------------------------------------------------"<<endl;
    list.insert(x4);
    list.insert(x3);
    list.insert(x2);
    list.insert(x1);
    list.show();
    system("pause");
    return 0;
}
-=Den=-
7 / 7 / 1
Регистрация: 03.04.2011
Сообщений: 171
11.05.2012, 22:59  [ТС]     Cannot convert from 'char *' to 'char' #3
ну да, спасибо ))
только вот она выдает запрос на вводи имени и все. далее выводит все, что должна вывести, только без значений.

"Project.exe": Загружено: "E:\For_programming\MSVS2010\Projects\Project\Release\Project.exe", Символы загружены.
"Project.exe": Загружено: "C:\Windows\SysWOW64\ntdll.dll", Невозможно найти или открыть файл PDB
"Project.exe": Загружено: "C:\Windows\SysWOW64\kernel32.dll", Невозможно найти или открыть файл PDB
"Project.exe": Загружено: "C:\Windows\SysWOW64\KernelBase.dll", Невозможно найти или открыть файл PDB
"Project.exe": Загружено: "C:\Windows\SysWOW64\msvcp100.dll", Символы загружены.
"Project.exe": Загружено: "C:\Windows\SysWOW64\msvcr100.dll", Символы загружены.
"Project.exe": Загружено: "C:\Windows\SysWOW64\apphelp.dll", Невозможно найти или открыть файл PDB
"Project.exe": Загружено: "ImageAtBase0x4a580000", Загрузка отключена параметром включения/исключения.
"Project.exe": Выгружено: "ImageAtBase0x4a580000"
HEAP[Project.exe]: Heap block at 002634E8 modified at 00263530 past requested size of 40
ОС Windows инициировала точку останова в Project.exe.

Это может быть вызвано повреждением кучи и указывает на ошибку в Project.exe или в одной из загруженных им DLL.

Возможной причиной так же может быть нажатие пользователем клавиши F12, когда фокус принадлежит Project.exe

Выведенное на экран окно содержит дополнительные данные для диагностики ошибки
HEAP[Project.exe]: Invalid address specified to RtlFreeHeap( 00260000, 002634F0 )
ОС Windows инициировала точку останова в Project.exe.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
12.05.2012, 15:33     Cannot convert from 'char *' to 'char' #4
Мне 1 мерещится, что char * - это массив , а char - это элемент массива ?
элемент -> элемент
массив размера N ->массив размера N
Не иначе
например массив размера N -> элемент
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.05.2012, 16:51     Cannot convert from 'char *' to 'char' #5
Ternsip, char* - это все-таки указатель и абсолютно не обязательно указатель на первый элемент массива.
Ternsip
 Аватар для Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
12.05.2012, 20:25     Cannot convert from 'char *' to 'char' #6
это одно и тоже, только разными словами
RABOCHIY(char* NAME, int AGE, char SEX, char* EDU):RABOCHIE(NAME, AGE, SEX)
char* NAME - не факт, что NAME=' ',например может NAME=" ";Си++ это видит и выдаёт ошибку (присвоить можно, если =' ')
Yandex
Объявления
12.05.2012, 20:25     Cannot convert from 'char *' to 'char'
Ответ Создать тему
Опции темы

Текущее время: 23:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru