Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Fox_Yo
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
#1

Ошибка "error C2446: :: нет преобразования "int" в "char *"

08.12.2014, 19:34. Просмотров 1348. Ответов 10
Метки нет (Все метки)

Ошибка: "error C2446: :: нет преобразования "int" в "char *"

Когда нажимаю двойным кликом на ошибку меня перекидывает в файл "type_traits"(внутри компилятора), и показывает что ошибка в этой строке:": _STD declval<_Ty1>())". Помогите пожалуйста.

Задание:
Кликните здесь для просмотра всего текста
1. Описания элемента однонаправленного списка из компонент согласно варианту (табл. 2.14).
2. Описания абстрактного типа данных (АТД), в состав которого входят:
- Область значения: структура данных - однонаправленный или двунаправленный список;
- Область действия
а) указатель на подпрограмму добавления элемента списка (для инициирования компонент элемента списка используются средства ввода данных);
б) указатель на подпрограмму удаления элемента списка;
в) указатель на подпрограмму вывода списка (используются средства вывода данных).
3. Реализации АТД:
- Добавление нескольких элементов в список;
- Вывод списка на экран в табличном виде;
- Удаление элементов списка по критерию согласно варианту (табл. 2.14);
- Вывода обновленного списка на экран в табличном виде.

Компоненты элемента списка: 1-я компонента Имя - значение символьного типа; 2-я компонента: Курс - целое значение; 3-я компонента: Город - символьного типа.

Критерий для удаления элемента списка: Студентов 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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
struct Student
{
    char Name[35];
    int course;
    char misto[30];
};
 
struct List
{
    Student data;
    List *next;
    List *prev;
};
List *head;
 
template <typename T, typename U>
typename common_type<T, U>::type *Addel(T znach, U pos)
{
    List *new_el = new List;
    new_el->data = znach;
    if (head == 0)
    {
        new_el->next = new_el;
        new_el->prev = new_el;
        head = new_el;
    }
    if (head < 0)
        return 0;
    else
    {
        List *p = head;
        for (int i = pos; i>1; i--)
                p = p->next;
        p->prev->next = new_el;
        new_el->prev = p->prev;
        new_el->next = p;
        p->prev = new_el;
    }
    cout << "\nЕлемент доданий...\n\n";
}
Student *Delel()
{
    if (head == 0)
    {
        cout << "\nСписок пустий\n\n";
        return 0;
    }
    if (head == head->next)
    {
        delete head;
        head = 0;
    }
    else
    {
        List *a = head;
        if (a == head)
            head = a->next;
        a->prev->next = a->next;
        a->next->prev = a->prev;
        delete a;
    }
    cout << "\nЕлемент видаленний...\n\n";
}
 
void Printlist()
{
    if (head == 0) cout << "\nСписок пустий\n\n";
    else
    {
        List *a = head;
        cout << "\nЕлементи списку: ";
        do
        {
            cout << a->data.Name << " ";
            cout << a->data.course << " ";
            cout << a->data.misto << " ";
            a = a->next;
        } while (a != head); cout << "\n\n";
    }
}
 
void main()
{
    setlocale(LC_ALL, "Rus");
    int znach, pos, x;
    char znach1[35];
    char znach3[30];
    do
    {
        cout << "1. Введiть i`мя" << endl;
        cout << "2. Введiть курс" << endl;
        cout << "3. Введiть мiсто проживання" << endl;
        cout << "4. Видалiть непотрiбне 2 завдання" << endl;
        cout << "5. Вивести список" << endl;
        cout << "0. Выйти" << endl;
        cout << "\nНомер операцii > ";
        cin >> x;
        switch (x)
        {
        case 1:
            cout << "Значення > ";
            cin >> znach1;
            cout << "Позицiя > ";
            cin >> pos;
            Addel(znach1, pos); break;
        case 2:
            cout << "Значення > ";
            cin >> znach;
            cout << "Позицiя > ";
            cin >> pos;
            Addel(znach, pos); break;
        case 3:
            cout << "Значення > ";
            cin >> znach3;
            cout << "Позицiя > ";
            cin >> pos;
            Addel(znach3, pos); break;
        case 4:
            if ((znach == 1) && (znach3 != "Kiev"))
                Delel(); break;
        case 5: Printlist(); break;
        }
    } while (x != 0);
}
Заранее спасибо!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2014, 19:34
Ответы с готовыми решениями:

OpenCV C++ vs2010 error C2446: :: нет преобразования "const char *" в "_TCHAR *"
Добрый день уважаемые форумчане. Столкнулся с небольшой проблемой. Выбивает...

Выдает ошибку c:\proect\8\8\8.cpp(60): error C2040: ==: "char [20]" отличается по уровням косвенного обращения от "int"
Программа должна выводить фамилии всех нападающих с датой рождения из основного...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить...

Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *"
string s = &quot;555 44 55 66&quot;;//размер строки заранее неизвестен ...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что &quot;char *concat(char *,...)&quot;:...

10
olgashat
88 / 71 / 81
Регистрация: 07.12.2014
Сообщений: 303
08.12.2014, 19:52 #2
а как вы инициализируете записи Вашей структуры? Вы же в функцию все передаете строчкой, а у Вас поля есь интовые
логично, чтоб все не ломать, расширить список передаваемых параметров
0
Fox_Yo
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
08.12.2014, 20:20  [ТС] #3
olgashat, Не очень понял о чем вы. Если про поле курс, то мне так и нужно, мне нужно поле интовое.
0
olgashat
88 / 71 / 81
Регистрация: 07.12.2014
Сообщений: 303
08.12.2014, 20:23 #4
Цитата Сообщение от Fox_Yo Посмотреть сообщение
cout << "Значення > ";
* * * * * * cin >> znach1;
Цитата Сообщение от Fox_Yo Посмотреть сообщение
type *Addel(T znach, U pos)
{
* * List *new_el = new List;
* * new_el->data = znach;
я вот про это
0
Fox_Yo
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
08.12.2014, 20:29  [ТС] #5
olgashat, Не в этом дело, я делал эту же прогу, но без структуры студент, и все норм. Это точно не в этом дело там параметр шаблона(который может быть любого типа), а там локальная переменная внутри главной функции.
0
olgashat
88 / 71 / 81
Регистрация: 07.12.2014
Сообщений: 303
08.12.2014, 20:33 #6
Fox_Yo, ну, тогда не знаю, это единственное место, которое я нашла, где может быть конфликт типов
0
Fox_Yo
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
08.12.2014, 23:49  [ТС] #7
Ап, пожалуйста помогите!
0
olgashat
88 / 71 / 81
Регистрация: 07.12.2014
Сообщений: 303
09.12.2014, 00:33 #8
Переменная znach целочисленная а Вы передаете ее как запись структуры
0
Fox_Yo
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
09.12.2014, 00:54  [ТС] #9
olgashat, Омг, попробуйте сами переименовать переменную znach. Проблема остается... Плюс у меня в структуре есть интовое значение:
C++
1
2
3
4
5
6
struct Student
{
    char Name[35];
    int course;
    char misto[30];
};
Что соответствует
C++
1
int znach
, в главной функции, а
C++
1
2
template <typename T, typename U>
typename common_type<T, U>::type *Addel(T znach, U pos)
может иметь вообще любое значение. Я по моему это объяснял постом выше. Возможно, я не понимаю что вы имеете ввиду, можете предоставить исправленный код, который будет запускаться?
0
HighPredator
5679 / 1998 / 721
Регистрация: 10.12.2010
Сообщений: 5,750
Записей в блоге: 3
09.12.2014, 10:10 #10
Вам изначально компилятор все написал. Вы вызываете Addel(znach1, pos); с массивом char и int. К слову, со znach3 та же ситуация.

Добавлено через 2 минуты
P.S. кстати сакральный смысл применения вами common_type я не постиг.
0
Fox_Yo
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 89
09.12.2014, 16:34  [ТС] #11
HighPredator, Все уже не актуально сам додумался, сам переделал:
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
// l.r.2.11.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
struct Student
{
    char Name[35];
    int course;
    char misto[30];
};
 
struct List
{
    Student data;
    List *next;
    List *prev;
};
List *head;
 
void Creation(List *list)
{
    list->next = list->prev = 0;
}
 
Student *Addel(List *list)
{
    List *new_el = new List;
    Student znach;
    cout << "\nIм'я > "; 
    cin >> znach.Name;
    cout << "\nКурс > ";
    cin >> znach.course;
    cout << "\nМiсто > ";
    cin >> znach.misto;
    new_el->data = znach;
    if (head == 0)
    {
        new_el->next = new_el;
        new_el->prev = new_el;
        head = new_el;
    }
    if (head < 0)
        return 0;
    else
    {
        List *p = head;
        for (int i = 0; i>1; i--)
                p = p->next;
        p->prev->next = new_el;
        new_el->prev = p->prev;
        new_el->next = p;
        p->prev = new_el;
    }
    cout << "\nЕлемент доданий...\n\n";
}
Student *Delel(List *list)
{
    if (head == 0)
    {
        cout << "\nСписок пустий\n\n";
        return 0;
    }
    if ((list->data.course == 1) && (list->data.misto != "Kiev"))
    {
    if (head == head->next)
    {
        delete head;
        head = 0;
    }
    else
    {
        List *a = head;
        if (a == head)
            head = a->next;
        a->prev->next = a->next;
        a->next->prev = a->prev;
        delete a;
    }
    }
    cout << "\nЕлемент видаленний...\n\n";
}
 
void Printlist()
{
    if (head == 0) cout << "\nСписок пустий\n\n";
    else
    {
        List *a = head;
        cout << "\nЕлементи списку: "<<endl;
        do
        {
            cout << a->data.Name << " ";
            cout << a->data.course << " ";
            cout << a->data.misto << endl;
            a = a->next;
        } while (a != head); cout << "\n\n";
    }
}
 
void main()
{
    setlocale(LC_ALL, "Rus");
    List list;
    Creation(&list);
    int x;
    do
    {
        cout << "1. Введiть i`мя" << endl;
        cout << "2. Видалiть непотрiбне" << endl;
        cout << "3. Вивести список" << endl;
        cout << "0. Выйти" << endl;
        cout << "\nНомер операцii > ";
        cin >> x;
        switch (x)
        {
        case 1:
            Addel(&list); break;
        case 2:
                Delel(&list); break;
        case 3: Printlist(); break;
        }
    } while (x != 0);
}
Но спасибо за ответ
0
09.12.2014, 16:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2014, 16:34

Ошибка при сборке многофайлового проекта: "невозможно преобразовать "int" в "const golf"
Сделал многофайловую программу программу, вот она: //golf.h #include...

Ошибка при компиляции In function"int main()"; expected ';', before "cin", [Build Error] [main.o] Error 1
Книга &quot;Основы программирования на C++ том 1&quot;(Стэнли Б.Липпман). Приводится...

Не существует подходящей функции преобразования из "std::string" в "int"
Я только начинаю изучать язык c++ по книге &quot;Язык программирования С++. Базовый...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru