Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 79
1

Аргумент типа const char* несовместим с параметром типа char* в классе

27.02.2019, 20:43. Просмотров 4561. Ответов 15
Метки нет (Все метки)

Данную ошибку находит в 74 - 76 строках, не могу понять что не так.
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
#include <iostream>
#include <iomanip>
using namespace std;
 
class Computer
{
    char name[20];
    char processor[10];
    char visual[10];
    int operation_memory;
    int hdd;
 
public:
 
    void SetName(char* name) 
    {
        strcpy_s(this->name, name);
    }
 
    char* GetName() 
    { 
        return name; 
    }
 
    void SetProcessor(char* processor) 
    {
        strcpy_s(this->processor, processor);
    }
 
    char* GetProcessor()
    {
        return processor;
    }
 
    void SetVisual(char* visual)
    {
        strcpy_s(this->visual, visual);
    }
 
    char* GetVisual()
    {
        return visual;
    }
 
    void SetOperation_memory(int operation_memory) 
    {
        this->operation_memory = operation_memory;
    }
 
    int GetOperation_memory() 
    {
        return operation_memory;
    }
 
    void SetHdd(int hdd)
    {
        this->hdd = hdd;
    }
 
    int GetHdd()
    {
        return hdd;
    }
 
    void Show() 
    {
        cout << "Name: " << name << "\n Processor: " << processor << "\n Visual: " << visual << "\n Operation memory: " << operation_memory << "\n HDD: " << hdd << endl;
    }
};
 
int main() 
{
    Computer computer1;
    computer1.SetName("Asus");
    computer1.SetProcessor("Intel Core I7");
    computer1.SetVisual("GTX 1050TI");
    computer1.SetOperation_memory(8);
    computer1.SetHdd(750);
    cout << "Computer #1\n Name: " << computer1.GetName() << "\n Processor: " << computer1.GetProcessor() << "\n Visual: " << computer1.GetVisual() << "\n Operation memory: " << computer1.GetOperation_memory() << "\n HDD: " << computer1.GetHdd() << endl;
    computer1.Show();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2019, 20:43
Ответы с готовыми решениями:

Аргумент типа (const char*) несовместим с параметром типа (char*). Как исправить?
#include &quot;Table.h&quot; #include &quot;Contour.h&quot; #include &quot;TwoShape.h&quot; #include &lt;iostream&gt; int...

Ошибка: "аргумент типа const char несовместим с параметром типа char*"
Существует много файловый проект на с++ 1)feed.cpp 2)feed.h 3)Source.cpp В файле feed.h...

"Аргумент типа char несовместим с параметром типа const char"
Программа должна перевести все символы до * в число,но что то пошло не так. P.S прошу не ругать....

Найти причины возникновения ошибки: аргумент типа "const char *" несовместим с параметром типа "char *"
Есть вот такая функция: в файле test.h extern UFUNEXPORT int UF_print_syslog( char...

15
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
27.02.2019, 20:48 2
Цитата Сообщение от thomas_ford Посмотреть сообщение
Данную ошибку находит в 74 - 76 строках, не могу понять что не так.
исправь везде на это
C++
1
void SetName(const char* name)
1
Эксперт C
25226 / 15701 / 3354
Регистрация: 24.12.2010
Сообщений: 34,254
27.02.2019, 20:56 3
C++
1
2
3
computer1.SetName((char *)"Asus");
computer1.SetProcessor((char *)"Intel Core I7");
computer1.SetVisual((char *)"GTX 1050TI");
И так далее...

Добавлено через 5 минут
Или как сказал уважаемый _stanislav.
Я этих ошибок наелся выше ушей. Ринулся исправлять прежнее. Но оно рожало лавину новых ошибок того же рода. Просто моему проекту уже много лет....
А зачем такие строгости? Они берегут нас от ошибок. Но я согласен сам себя поберечь.
Но если только начинаешь... Да, имеет смысл думать и различать уместность char */ const char *
1
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
27.02.2019, 21:12 4
Цитата Сообщение от Байт Посмотреть сообщение
Я этих ошибок наелся выше ушей.
я полагаю, если ты так критично отзываешься об этой ошибке, опции у препроцессора нет что бы быть более лояльным к исходному коду?
0
Эксперт C
25226 / 15701 / 3354
Регистрация: 24.12.2010
Сообщений: 34,254
27.02.2019, 21:30 5
Цитата Сообщение от _stanislav Посмотреть сообщение
опции у препроцессора нет что бы быть более лояльным к исходному коду?
Думаю, что нет. Это же error, а не warring. Да и не фига препроцессору там делать. Конечно, есть всякие #pragma, но это от лукавого, ибо зависят от компилятора. Да и error они не блокируют.
Я проще поступил. Использовал препроцессор по прямому назначению
C++
1
#define Cc (const char *)
Добавлено через 3 минуты
Может быть флаги у компилятора? Но я пользую пяток всяких трансляторов, не считая тех, которые на хостах. Описание флагов на каждом - 50К плотного текста... Временами и на мало знакомых мне языках...
0
0 / 0 / 0
Регистрация: 22.10.2018
Сообщений: 79
28.02.2019, 01:56  [ТС] 6
Спасибо, помогло, но теперь при компиляции появляется следующая ошибка
0
Миниатюры
Аргумент типа const char* несовместим с параметром типа char* в классе  
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
28.02.2019, 07:48 7
Цитата Сообщение от thomas_ford Посмотреть сообщение
но теперь при компиляции появляется следующая ошибка
у тебя по ходу вызывается функция полученная в процессе инстанцирования шаблона функции:
C++
1
2
3
4
5
template <size_t size>
errno_t strcpy_s(
   char (&dest)[size],
   const char *src
);
исключение вылетает потому что размерность массива не достаточна.

Добавлено через 6 минут
кстати кто понимает, для чего такая конструкция может понадобиться, или что она означает?
C++
1
L"Buffer is too small" && 0
зачем тут && 0?
0
Эксперт C
25226 / 15701 / 3354
Регистрация: 24.12.2010
Сообщений: 34,254
28.02.2019, 09:27 8
Цитата Сообщение от _stanislav Посмотреть сообщение
зачем тут && 0?
я бы сказал, "зачем тут L"Buffer is too small""
Логическое Выражение , которое дает false.
1
13884 / 7419 / 1760
Регистрация: 30.01.2014
Сообщений: 12,412
28.02.2019, 09:29 9
Цитата Сообщение от _stanislav Посмотреть сообщение
зачем тут && 0?
Чтобы ассерт сработал.

Цитата Сообщение от _stanislav Посмотреть сообщение
что она означает?
Вывод информативного сообщения при ассерте.
1
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
28.02.2019, 09:43 10
Цитата Сообщение от Байт Посмотреть сообщение
я бы сказал, "зачем тут L"Buffer is too small""
почему? со строкой понятно же все, информация об ошибке.
Цитата Сообщение от DrOffset Посмотреть сообщение
Чтобы ассерт сработал.
вот блин, сам бы мог догадаться.

Добавлено через 2 минуты
только не понятно, если это прописано где то как
C++
1
assert(L"Buffer is too small" && 0)
как это можно вывести на экран, оно же в коде.

Добавлено через 1 минуту
а если это где то прописано как
C++
1
"L\"Buffer is too small\" && 0"
то какой смысл в выводе сообщения && 0?
0
13884 / 7419 / 1760
Регистрация: 30.01.2014
Сообщений: 12,412
28.02.2019, 09:47 11
Цитата Сообщение от _stanislav Посмотреть сообщение
как это можно вывести на экран, оно же в коде.
Ты ассертами хоть раз пользовался?

Посмотри: https://rextester.com/DNW97606
0
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
28.02.2019, 09:50 12
Цитата Сообщение от DrOffset Посмотреть сообщение
Ты ассертами хоть раз пользовался?
нет
0
13884 / 7419 / 1760
Регистрация: 30.01.2014
Сообщений: 12,412
28.02.2019, 09:54 13
Примерная реализация:
C++
1
2
3
4
5
#ifdef NDEBUG
#define assert(expr)
#else
#define assert(expr) if(!(expr)) { puts("Assertion failed: " #expr); abort(); }
#endif
0
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
28.02.2019, 09:54 14
DrOffset, это получается отладчик вставляет в сообщение об ошибке? Exception: (L"Buffer is too small" && 0)
https://www.cyberforum.ru/post13363612.html
0
13884 / 7419 / 1760
Регистрация: 30.01.2014
Сообщений: 12,412
28.02.2019, 10:01 15
Цитата Сообщение от _stanislav Посмотреть сообщение
Exception
Не Exception, а Expression. Т.е. выражение, истинность которого ассерт декларирует.
assert(Expr); можно перевести как "утверждаю (assert), что expr истинно".
Если утверждение нарушено - программа завершается.

В данном случае условие было проверено где-то выше, поэтому его в сам ассерт не вписали. Но программу уронить таки решили, но с каким-то осмысленным сообщением. Обычно все-таки делают так (если самого по себе выражения неостаточно для однозначного описания ситуации), а случай из этой темы - несколько вырожденный:
C++
1
2
// псевдокод
assert(someval < N && "Some Val less than N");
2
(80 / 20 || 50 / 50) = x
1575 / 1212 / 459
Регистрация: 16.08.2014
Сообщений: 5,095
Записей в блоге: 1
28.02.2019, 10:03 16
DrOffset, все понял, документацию прочитал
https://docs.microsoft.com/en-... ew=vs-2017
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2019, 10:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Ошибка (активно) E0167 аргумент типа "const char *" несовместим с параметром типа "char *"
Есть код программы. выдаёт ошибку при компилировании , ломаю голову третий день, помогите) ...

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*"
int f(unsigned char s, unsigned char q) { N = strlen(s); //Ошибка тут... M = strlen(q); //...и...

Аргумент типа char (*)[1000] несовместим с параметром типа char**
Здравствуйте! Есть вот такая структура: #define max 1000 struct expr { char s; int...

Аргумент типа "const char *" несовместим с параметром типа "char *"
Sourse.cpp: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &quot;Account.h&quot; using namespace std;...


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

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

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