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

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

Войти
Регистрация
Восстановить пароль
 
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
#1

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

27.10.2011, 19:33. Просмотров 415. Ответов 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++
Я не могу разобраться с классами и конструкторами, в строчке Progect();// {numb=0; sum=0; date=;} всегда высвечивает ошибку,...

Ошибка при объявлении массива - C++
Здраствуйте. Я кое чего не понимаю: В программе используется массив: long double myarray={3.16202e-322, 1.58101e-322}; с числами...

Ошибка при объявлении массива - C++
У меня такая проблема... Я хочу объявить массив из М элементов, где М это константа. И в итого Си говорит, что нужно выражение в ??? что...

Инициализация массива при объявлении - C++
Здравствуйте Маленький вопросик как проинициализировать массив при определении? template <class T> class myClass { private:...

Ошибка компиляции при объявлении массива - C++
using namespace std; const char IDSounds = { { "1", "sound1.wav", "5BE4A5E9CA66EF70748ED87D3137844D" }, {...

Компилятор требует константное выражение при объявлении массива - C++
Имею некоторые проблемы. Спасибо за помощь #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <locale> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Сыроежка
Заблокирован
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
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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 };
dimcoder
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
27.10.2011, 19:57  [ТС] #7
**№*№#@**&$*&#&*$^(@(&$* #*&$* #*&? А так спасибо конечно. А русский понимаю, просто срабатывает рефлекс, который не позволяет доверять быстрым ответам.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2011, 19:57
Привет! Вот еще темы с ответами:

Компилятор выдает ошибку при объявлении массива. Не могу понять где соль - C++
Объясните пожалуйста в чем моя ошибка. Вот исходник #include <iostream> // cin, cout,endl #include <math.h> // Мат функции ...

Использование аргументов командной строки - C++
Всем доброго дня !!! Подскажите пожалуйста как связать этот код программы с командной строкой ? #include <fstream> #include...

Использование аргументов передаваемых в функцию main - C++
Здравствуйте, дорогие форумчане! мне нужна помощь по интересному вопросу, который я вычитал в книге. Дело все в том, что я узнал, что в...

Использование массивов в качестве аргументов функции - C++
Написала программу, работает правильно, только не совсем по условию задачи. Помоги пожалуйста исправить. Условие: найти наибольшую...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.10.2011, 19:57
Ответ Создать тему
Опции темы

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