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

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

Восстановить пароль Регистрация
 
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
27.10.2011, 19:33     Использование аргументов в конструкторе при объявлении массива - }{ЭЛП #1
Здравствуйте. Мне нужен массив класса button. Короче:

C++
1
2
3
button but(1);//работает
button but[2];//работает
button but[2](1);//не работает
Как сделать чтобы 3-ий вариант работал?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сыроежка
Заблокирован
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,108
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,108
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++
Использование аргументов командной строки C++

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

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

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