132 / 52 / 43
Регистрация: 09.05.2015
Сообщений: 562
1

Значение типа, нельзя использовать. Ошибка

13.06.2018, 23:47. Показов 1788. Ответов 3
Метки нет (Все метки)

Значение типа const char * нельзя использовать для инициализации сущности типа char[20]

C++
1
2
3
4
5
6
class Frabjous
{
private:
    char fab[20];
public:
    Frabjous(const char * s = "C++") :fab(s) { } //тут s помечается красным и выпендривается
Добавлено через 14 минут
Этот код прямиком из книги.
Я решил инициализировать fab не через список инициализации а функцией strcpy
C++
1
Frabjous(const char * s = "C++")  { strcpy(fab, s); }
Не знаю правильно ли так, хотелось бы узнать почему не работает вариант из книги.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2018, 23:47
Ответы с готовыми решениями:

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

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

Значение типа "void *" нельзя использовать для инициализации сущности типа "int *"
#include <pthread.h> #include <semaphore.h> #include <stdio.h> #include <Windows.h> ...

Значение типа "void" нельзя использовать для инициализации сущности типа "int"
Не понимаю, почему компилятор считает, что s.pop() это значение типа "void".. он же вернет этот...

3
560 / 371 / 201
Регистрация: 30.04.2017
Сообщений: 697
14.06.2018, 09:08 2
Цитата Сообщение от Bring Посмотреть сообщение
Значение типа const char * нельзя использовать для инициализации сущности типа char[20]
Угу, массив не получится указателем иницализировать, массив - это как "константный указатель на изменяемые данные", нельзя этот указатель поменять на другой через инциализацию, но можно перегнать в этот массив данные через strcpy().
C++
1
2
    const char* str = "Hello World";
    char abc[20] = str;               //no work
const char * s = "C++" - является "изменяемым указателем на константные данные", что также накладывает ограничения: нельзя передать его в char *
Как это могло бы выглядеть в книге
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
class A
{
    const char *share_str;
public:
    A(const char *str = "C++") : share_str(str)
    {
        std::cout<<"Hi "<<share_str<<std::endl;
    }
};
 
int main()
{
    A();
    A("Java");
    return 0;
}
Цитата Сообщение от Bring Посмотреть сообщение
Не знаю правильно ли так
strcpy()? Да тоже норм вариант, главное чтоб под данные хватало места.
Можно еще использовать std::string либо strncpy()
1
С чаем беда...
Эксперт CЭксперт С++
10013 / 5359 / 1467
Регистрация: 18.10.2014
Сообщений: 12,926
14.06.2018, 09:41 3
Цитата Сообщение от Bring Посмотреть сообщение
Этот код прямиком из книги.
Что за книга такая?
0
132 / 52 / 43
Регистрация: 09.05.2015
Сообщений: 562
14.06.2018, 13:56  [ТС] 4
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Что за книга такая?
stephen prata
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2018, 13:56
Помогаю со студенческими работами здесь

Значение типа "int" нельзя использовать для сущности типа "conduction"
Добрый вечер. кто может проверить в своем компиляторе, работает данная программа, или нет? У меня...

"Значение типа float* нельзя использовать для инициализации сущности типа float"
#include &lt;math.h&gt; #include&lt;iostream&gt; #include &lt;iomanip&gt; #include&lt;conio.h&gt; using namespace std;...

Ошибка: "Значение типа float нельзя присвоить сущности типа int"
При компиляции в Visual C++ получается такая ошибка: &quot;Значение типа float нельзя присвоить сущности...

Ошибка: "const char[78]" нельзя использовать для инициализации сущности типа char[12]
class Goroskop { private: char name_Zodiak; public: char name_Zodiak = {&quot;Aries&quot; &quot;Taurus&quot;...


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

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

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