Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
oleszka
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 13
#1

Поля класса - C++

28.06.2012, 00:28. Просмотров 446. Ответов 8
Метки нет (Все метки)

здравствуйте ) извините заранее если глупый вопрос я просто новичок)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class mycl {
       public:
        char  a[], b[];
};
 
int main()
{
        mycl pr;
 
        cin>>pr.a;
        cin>>pr.b;
 
        getch();
        return 0;
}
Поля класса
Почему в экземпляр pr попадает два раза строка "asd". Почему не так - pr: {"qwe","asd"} ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 00:54     Поля класса #2
У меня не скопилировалось
error C2229: class 'mycl' has an illegal zero-sized array
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
28.06.2012, 01:37     Поля класса #3
Цитата Сообщение от oleszka Посмотреть сообщение
char *a[], b[];
попробуйте указать длину массива или использовать char * вместо char
MrGluck
Ворчун
Эксперт CЭксперт С++
6647 / 3838 / 505
Регистрация: 29.11.2010
Сообщений: 10,154
28.06.2012, 01:55     Поля класса #4
Добавь после считывания cin.ignore()
Все дело в том, что в потоке остается символ '/n' после нажатия Enter и он идет в след. строку.
Да и массивы у тебя чудные. Объявил бы размерность, что ли. Динамические (со *) использовать не советую, с памятью намучаешься.
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
28.06.2012, 09:31     Поля класса #5
Цитата Сообщение от MrGluck Посмотреть сообщение
Все дело в том, что в потоке остается символ '/n' после нажатия Enter и он идет в след. строку.
Не спорю,но как он заполняет первый массив второй строкой
Цитата Сообщение от oleszka Посмотреть сообщение
char *a[], b[];
Сделайте так
C++
1
2
3
4
char a[4], b[4];
//размерность 4,так как записываются 3 символа и завершающий нуль-символ
//или можно так
char *a[4], b[4];
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12
28.06.2012, 11:59     Поля класса #6
Цитата Сообщение от oleszka Посмотреть сообщение
class mycl {
* * * *public:
* * * * char *a[], b[];
};
а вы не думали конструктор слелать
C++
1
2
3
4
5
6
7
mycl::mycl(char *s1,char *s2)
{
a=new char[strlen(s1)];
b=new char[strlen(s2)];
strcpy(a,s1);
strcpy(b,s2);
}
Добавлено через 5 минут
oleszka, для переменных типа char* всегда должна быть выделена память если вы хотите работать с ними
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
28.06.2012, 12:02     Поля класса #7
Van111, тогда уж
C++
1
2
3
4
a = new char[strlen(s1) + 1];
b = new char[strlen(s2) + 1];
strcpy(a,s1);
strcpy(b,s2);
MrGluck
Ворчун
Эксперт CЭксперт С++
6647 / 3838 / 505
Регистрация: 29.11.2010
Сообщений: 10,154
28.06.2012, 12:52     Поля класса #8
Ну тогда уж надо и деструктор, конструктор копий и оператор присвоения.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 15:00     Поля класса
Еще ссылки по теме:

C++ Статические поля класса
C++ Вывести поля класса
C++ Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать?
Передача поля класса C++
C++ Изменение константного поля класса

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

Или воспользуйтесь поиском по форуму:
oleszka
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 13
28.06.2012, 15:00  [ТС]     Поля класса #9
ааааа.. я понял. точно длина!
еще попробую конструктор. СПАСИБо всем )
Yandex
Объявления
28.06.2012, 15:00     Поля класса
Ответ Создать тему
Опции темы

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