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

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

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
#1

Использование аргументов в конструкторе при объявлении массива - }{ЭЛП - C++

27.10.2011, 19:33. Просмотров 393. Ответов 6
Метки нет (Все метки)

Здравствуйте. Мне нужен массив класса button. Короче:

C++
1
2
3
button but(1);//работает
button but[2];//работает
button but[2](1);//не работает
Как сделать чтобы 3-ий вариант работал?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2011, 19:33     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП
Посмотрите здесь:

C++ Ошибка при объявлении массива
Ошибка при объявлении массива C++
C++ Компилятор выдает ошибку при объявлении массива. Не могу понять где соль
C++ Ошибка в объявлении класса (в конструкторе)
C++ Использование using над списком шаблонных аргументов переменного типа
C++ Ошибка в объявлении массива
Использование указателей в качесве аргументов функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
27.10.2011, 19:37     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #2
Цитата Сообщение от dimcoder Посмотреть сообщение
Здравствуйте. Мне нужен массив класса button. Короче:

C++
1
2
3
button but(1);//работает
button but[2];//работает
button but[2](1);//не работает
Как сделать чтобы 3-ий вариант работал?
А как он должен работать?! Что именно вы хотите получить в третьем варианте? Вы объявляете одномерный массив размерностью равной 2 и хотите его первый элемент проинициализировать 1?! Тогда это пишется следующим образом

C++
1
button but[2] = { 1 };
Или же вы хотите объявить двумерный массив? Тогда это записывается как

C++
1
button but[2][1];
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
27.10.2011, 19:40  [ТС]     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #3
Да нет, не инициализировать! but[2] - это массив объектов класса button. Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef button_h
#define button_h
 
class button {
public:
   button(int = 0);
   void on(int);
   void off(int);
private:
   int condition; //0 - free, 1 - busy
   int place;
};
 
#endif
А вот описание функции-конструктора:

C++
1
button::button (int pl) {condition = 0; place = (pl == 0 || pl == 1? pl : 0);}
Сыроежка
Заблокирован
27.10.2011, 19:43     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #4
Цитата Сообщение от dimcoder Посмотреть сообщение
Да нет, не инициализировать! but[2] - это массив объектов класса button. Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#ifndef button_h
#define button_h
 
class button {
public:
   button(int = 0);
   void on(int);
   void off(int);
private:
   int condition; //0 - free, 1 - busy
   int place;
};
 
#endif
А вот описание функции-конструктора:

C++
1
button::button (int pl) {condition = 0; place = (pl == 0 || pl == 1? pl : 0);}
Я еще раз спрашиваю, чего вы хотите сконструировать в третьем варианте?!
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
27.10.2011, 19:46  [ТС]     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #5
Хочу сконструировать то, чтобы в конструктор передавалась 1 и присваивалась переменной place, находящейся в разделе private.
Сыроежка
Заблокирован
27.10.2011, 19:49     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #6
Цитата Сообщение от dimcoder Посмотреть сообщение
Хочу сконструировать то, чтобы в конструктор передавалась 1 и присваивалась переменной place, находящейся в разделе private.
Так я вам указал. С первого раза не доходит?! Или вы еще русский язык не освоили?!



C++
1
button but[2] = { 1 };
Если хотите, чтобы два элемента массива инициализировались 1, то напишите


C++
1
button but[2] = { 1, 1 };
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 19:57     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП
Еще ссылки по теме:

Использование аргументов командной строки C++
C++ Использование массивов в качестве аргументов функции
Использование аргументов передаваемых в функцию main C++
Инициализация массива при объявлении C++
Ошибка компиляции при объявлении массива C++

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

Или воспользуйтесь поиском по форуму:
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,111
27.10.2011, 19:57  [ТС]     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #7
**№*№#@**&$*&#&*$^(@(&$* #*&$* #*&? А так спасибо конечно. А русский понимаю, просто срабатывает рефлекс, который не позволяет доверять быстрым ответам.
Yandex
Объявления
27.10.2011, 19:57     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП
Ответ Создать тему
Опции темы

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