71 / 51 / 8
Регистрация: 13.11.2017
Сообщений: 372
1

Значение типа "const char" нельзя присвоить сущности типа "char*"

29.08.2018, 09:03. Показов 4821. Ответов 6
Метки нет (Все метки)

Добрый день. Разбираю классы и столкнулся вот с чем. В одной версии visual studio данный код работал отлично. В версии 2017 года появляется такая вот ошибка в 13-ой строке: "Значение типа "const char" нельзя присвоить сущности типа "char*"". Вот код из файла .h
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
#pragma once
 
namespace Program
{
    class Books
    {
    private:
        char *Autor;
        char *Name;
        char *Group;
        int Year;
    public:
        Books() { Autor = ""; Name = ""; Group = ""; Year = 0; }
        Books(char* autor, char* name, char* group, int year);
        char* getAutor() const;
        char* getName() const;
        char* getGroup() const;
        int getYear();
        void Print(std::ostream &);
        Books MAX(const Books &);
 
        ~Books();
    };
}
И ещё в файле cpp. В 15-ой строке пишет: "Требуется идентификатор." Не могу разобраться, что нужно.
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
#include <iostream>
#include "Books.h"
 
namespace Program
{
    Books::Books()
    {
    }
 
 
    Books::~Books()
    {
    }
 
    Books(char* autor, char* name, char* group, int year) 
    {
        Autor = autor;
        Name = name;
        Group = group;
        Year = year;
    }
 
    char* Books::getAutor() const
    {
        return Autor;
    }
 
    char* Books::getName() const
    {
        return Name;
    }
 
    char* Books::getGroup() const
    {
        return Group;
    }
 
    int Books::getYear()
    {
        return Year;
    }
 
    void Print(std::ostream &os) 
    {
        os << "Название книги: " << Autor << std::endl;
        os << "Автор книги:" << Name << std::endl;
        os << "Группа: " << Group << std::endl;
        os << "Год: " << Year << std::endl;
    }
 
    Books MAX(const Books &b)
    {
        if (Year > b.getYear())
            return *this;
        else return b;
    }
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2018, 09:03
Ответы с готовыми решениями:

Как исправить ошибку: Значение типа "const char *" нельзя присвоить сущности типа "char *"?
#include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; struct Car_Specifications {...

Ошибка: значение типа "const char*" нельзя присвоить сущности типа "char*"
Появилось в 17 студии, как это исправить?

Ошибка "значение типа "const char [81]" нельзя использовать для инициализации сущности типа "const unsigned char [61]"
Прошу помощи, так как раньше прога работала, сейчас решил вернуться и выдает ошибку: #pragma once...

Error: значение типа "const char" нельзя присвоить сущности типа "double"
#include &lt;iostream&gt; #include &lt;iomanip&gt;// using namespace std; void main(void) { const int...

6
Эксперт CЭксперт С++
5094 / 2279 / 332
Регистрация: 20.02.2013
Сообщений: 5,598
Записей в блоге: 19
29.08.2018, 09:08 2
eganator, либо учитесь корректно работать с сишными строками (например, копируют сишные строки с помощью функции strcpy), либо используйте плюсовые строки (std::string). Одно из двух.
0
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
29.08.2018, 09:29 3
const char - только один символ, который нельзя поменять
char* - строка символов, которую можно переприсвоить
0
Диссидент
Эксперт C
27173 / 16934 / 3741
Регистрация: 24.12.2010
Сообщений: 38,112
29.08.2018, 09:34 4
eganator, в дополнение к замечанию уважаемого sourcerer,
C++
1
Books() { Autor = &""; Name = &""; Group = &""; Year = 0; }
100-процентной уверенности нет, так как такую конструкцию никогда не применял. Для указателей без значения применял "=NULL"
Цитата Сообщение от sourcerer Посмотреть сообщение
Одно из двух.
Имхо, все-таки - оба. Нельзя программировать на плюсах, не зная основ Си.
1
Эксперт по математике/физике
3368 / 1893 / 569
Регистрация: 09.04.2015
Сообщений: 5,297
29.08.2018, 09:36 5
Цитата Сообщение от eganator Посмотреть сообщение
В 15-ой строке пишет:
Возможно Вы потеряли Books::
а также в 43 и 51-ой
1
7422 / 5017 / 2890
Регистрация: 18.12.2017
Сообщений: 15,694
29.08.2018, 11:31 6
Лучший ответ Сообщение было отмечено eganator как решение

Решение

что-то подобное было здесь: Зависимость работы программы от версии visual studio
1
71 / 51 / 8
Регистрация: 13.11.2017
Сообщений: 372
29.08.2018, 12:12  [ТС] 7
Yetty, Спасибо, как раз так и сделал и всё заработало.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2018, 12:12
Помогаю со студенческими работами здесь

Ошибка: значение типа "const char *" нельзя использовать для инициализации сущности типа "char *" (строка 8)
#include &lt;iostream&gt; using namespace std; int main() { int number = 0; char *result; char...

Значение типа "const char *" нельзя использовать для инициализации сущности "char*"
Книга Пратта, Лекции и Упражнения. 750 страница, листинг 14.8. В объявлении производного класса,...

Значение типа "char *" нельзя присвоить сущности типа "LPWSTR"
значение типа &quot;char *&quot; нельзя присвоить сущности типа &quot;LPWSTR&quot; void AddColToListView(char...

Значение типа "char *" нельзя присвоить сущности типа "LPWSTR"
как исправить эту ошибку значение типа &quot;char *&quot; нельзя присвоить сущности типа &quot;LPWSTR&quot;


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru