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

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

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

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

28.06.2012, 00:28. Просмотров 464. Ответов 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"} ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Поля класса (C++):

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - "указателЯ" Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

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

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! - C++
Друзья! Почему так? #include <windows.h> #include <iostream> using namespace std; //Вот главный класс class A{ ...

поля класса - C++
Задача заключается в поиске площади треугольника через класс. Программой должна быть предусмотрена проверка корректности ввода сторон...

Вывести поля класса - C++
Положим, есть класс A: class A { public: int a,b,c,d; // . . . какие-то функции } Как перегрузить оператор << чтобы можно...

Static поля класса - C++
объясните нубу, вот имею я такой код на С# class WebResponse { public static string GET(string Url, string Data) ...

8
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
28.06.2012, 00:54 #2
У меня не скопилировалось
error C2229: class 'mycl' has an illegal zero-sized array
0
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
28.06.2012, 01:37 #3
Цитата Сообщение от oleszka Посмотреть сообщение
char *a[], b[];
попробуйте указать длину массива или использовать char * вместо char
0
MrGluck
Модератор
Эксперт CЭксперт С++
7424 / 4539 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
28.06.2012, 01:55 #4
Добавь после считывания cin.ignore()
Все дело в том, что в потоке остается символ '/n' после нажатия Enter и он идет в след. строку.
Да и массивы у тебя чудные. Объявил бы размерность, что ли. Динамические (со *) использовать не советую, с памятью намучаешься.
0
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];
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 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* всегда должна быть выделена память если вы хотите работать с ними
1
grizlik78
Эксперт С++
1964 / 1457 / 119
Регистрация: 29.05.2011
Сообщений: 3,016
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);
2
MrGluck
Модератор
Эксперт CЭксперт С++
7424 / 4539 / 673
Регистрация: 29.11.2010
Сообщений: 12,319
28.06.2012, 12:52 #8
Ну тогда уж надо и деструктор, конструктор копий и оператор присвоения.
1
oleszka
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 13
28.06.2012, 15:00  [ТС] #9
ааааа.. я понял. точно длина!
еще попробую конструктор. СПАСИБо всем )
0
28.06.2012, 15:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2012, 15:00
Привет! Вот еще темы с ответами:

Поля дружественного класса - C++
есть примерно такой код class ClientAuthorization { public: int count; //считается в конструкторе, не буду писать весь код,...

Статические поля класса - C++
class mi { int a,b; public: mi(int a, int b) : a(a),b(b) {} void sw() { std::cout<<a<<" - "<<b<<std::endl; } ...

Закрытые поля класса - C++
Здравствуйте.Помогите разобраться с кодом. Определен следующий класс: struct Cls { Cls(char c, double d, int i); private: ...

Статические поля класса - C++
Не подскажете как инициализировать статический массив? Но чтобы я сам мог ввести этот массив.


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

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

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