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

Конструктор класса не дает инициализировать переменную класса

24.05.2018, 16:10. Показов 856. Ответов 6
Метки нет (Все метки)

Привет. Вот такой вот класс. Когда пытаюсь в конструкторе присвоить name и hobby что либо, пишет ошибку: выражение должно быть допустимым для изменения левосторонним значением. Покопался в предыдущих по книге примерах, классов с char в привате не нашел. Вообще непонятно, потому что const нигде нету.
C++
1
2
3
4
5
Cow::Cow()
{
    name = "cow";    //ОШИБКА!
    hobby = "hi";      //значение типа const char нельзя присвоить сущности типа char
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Cow
{
private:
    char name[20];
    char * hobby;
    double weight;
public:
    Cow();
    Cow(const char * nm, const char * ho, double wt);
    Cow(const Cow & c);
    ~Cow();
    Cow & operator=(const Cow & c);
    void ShowCow() const;           //отображение всех данных Cow
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2018, 16:10
Ответы с готовыми решениями:

Почему (для чего?) нельзя инициализировать статик переменную внутри класса?
Привет. Почему (для чего?) нельзя инициализировать статик переменную внутри класса? И какие есть...

Запись в глобальную структуру/переменную конструктор класса
Всем привет, пытаюсь реализовать следующую задачу. Есть класс с констуктором и функцией, типа: ...

Возможно ли указатель производного класса инициализировать объектом базового класса?
имеется связка наследуемых классов A->B а от B наследуются одновременно еще два класса B->C и B->D...

Копирующий конструктор класса, содержащего переменную-член указатель
Практикуюсь по книге Стенли Липпмана "Язык программирования C++ вводный курс" 4 изд. Упражнение...

6
"C with Classes"
1590 / 1369 / 512
Регистрация: 16.08.2014
Сообщений: 5,694
Записей в блоге: 1
24.05.2018, 16:12 2
Bring, лучше использовать std::string или память в ручную выделять, сейчас набросаю пример
0
132 / 52 / 43
Регистрация: 09.05.2015
Сообщений: 562
24.05.2018, 16:17  [ТС] 3
Цитата Сообщение от _stanislav Посмотреть сообщение
лучше использовать std::string или память в ручную выделять, сейчас набросаю пример
правила задания такие, я бы конечно сделал со string
0
"C with Classes"
1590 / 1369 / 512
Регистрация: 16.08.2014
Сообщений: 5,694
Записей в блоге: 1
24.05.2018, 16:22 4
Bring,
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
#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
 
class Cow
{
private:
    char name[20];
    char * hobby;
    double weight;
public:
    Cow();
    Cow(const char * nm, const char * ho, double wt);
    Cow(const Cow & c);
    ~Cow();
    Cow & operator=(const Cow & c);
    void ShowCow() const;           //отображение всех данных Cow
};
 
Cow::Cow()
{
    strcpy(name, "cow");
    hobby = new char[3];
    strcpy(hobby, "hi");
}
не забывай освобождать память, и опасайся утечек и переполнений

Добавлено через 2 минуты
но все равно код какой то не правильный, нужно в конструктор передавать строки и размер по моему.
1
132 / 52 / 43
Регистрация: 09.05.2015
Сообщений: 562
24.05.2018, 16:24  [ТС] 5
Цитата Сообщение от _stanislav Посмотреть сообщение
не забывай освобождать память
спасибо.
0
"C with Classes"
1590 / 1369 / 512
Регистрация: 16.08.2014
Сообщений: 5,694
Записей в блоге: 1
24.05.2018, 16:30 6
Bring, пожалуйста.
Зачем char name[20]; если strlen("cow") == 3 + 1 ?
0
132 / 52 / 43
Регистрация: 09.05.2015
Сообщений: 562
24.05.2018, 16:32  [ТС] 7
Цитата Сообщение от _stanislav Посмотреть сообщение
Зачем char name[20]; если strlen("cow") == 3 + 1 ?
класс описан в задании, а самое задание - определить методы класса.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2018, 16:32
Помогаю со студенческими работами здесь

Конструктор класса не видит конструктор по умолчанию другого класса
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора...

Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
Скажу сразу, а то сейчас начнется, что я прекрасно понимаю, что поля класса при объявлении...

Конструктор внутри класса, поля которого являются членами другого класса
Вот фрагмент кода. class Class_Figure { Class_Triangle tr1; Class_Circle cr1; public:...

Вызвать конструктор производного класса без конструктора базового класса
Здравствуйте! У меня есть базовый класс треугольник и производный класс равносторонний...


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

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

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