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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
#1

Проинициализировать класс массивов который имеет конструктор по умолчанию - C++

07.07.2012, 22:58. Просмотров 1212. Ответов 21
Метки нет (Все метки)

Или я не знаю как правельно спрасить у гуглы,или это не возможно,кто знает как можно реализовать такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class a
{
int q,w,e;
    a(int b)
{
  q = w = e = b;
}
};
 
int main()
{
   a seliimasiv[500](4);//вот тут та и ошибка;Как можно проинициализировать его ?
a seliimasiv[500] = 4; 
 
 
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2012, 22:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проинициализировать класс массивов который имеет конструктор по умолчанию (C++):

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Класс Date, определив в нем конструктор по умолчанию - C++
Нужно доработать разработанный ранее класс Date, определив в нем конструктор по умолчанию, создающий «дату по умолчанию» (например,...

Разработать класс матрица, конструктор по умолчанию, вывод на экран - C++
Разработать класс матрица, конструктор по умолчанию, вывод на экран Вроде бы разработала но не работает. подскажите, в чем проблема? ...

Создать класс Point, который имеет два закрытых члена класса (координаты) - C++
Помогите плиз код написать. Я чёт не очень понимаю в классах. Создайте класс Point, который имеет два закрытых члена класса...

Описать класс "полином" - Для чего нужен конструктор по умолчанию? - C++
неоюходимо написать класс для работы с полиномами в нете нашел что-то поожее может кто-нибудь объяснить для чего нужен конструктор по...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
07.07.2012, 23:17 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class a
{
public:
int *pArr;
int sz;
    a(int b);
a~a();
};
a::a(int b)
{
sz=b;
  p=new int[b];
}
a::~a(){
delete []a;
}
 
int main()
{
a seliimasiv =a(500);//
for(int i=0; to i<a.sz; i++){
seliimasiv.p[i] = 4; 
 }
return 0;
}
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
07.07.2012, 23:29  [ТС] #3
то есть вы предлогаете в каждом классе a хранить массив из классов a

можно как-нибудь по другому ?

PS код вообще не рабочий
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.07.2012, 23:41 #4
xADMIRALx, так вам всё-таки нужен класс массивов или массив объектов класса?
Если второй вариант, то, пожалуй, вот так (ваш же вариант переделал):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class a
{
    int q,w,e;
    public:
    a(int b)
    {
        q = b;
        w = b;
        e = b;
    }
};
 
int main()
{
    a seliimasiv[500]=4;
    return 0;
}
P.S. конструктор должен находиться в разделе public, а у классов C++ по умолчанию идёт доступ private
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
07.07.2012, 23:43 #5
Вот так будет не так страшно:
C++
1
2
3
4
5
6
a::a(int b)
{
sz=b;
  p=new int[b];
for (int i=0; i<b; i++) p[i]=0;
}
и в классе:
C++
1
2
3
4
5
6
7
8
9
10
11
class a
{
public:
int *p;
int sz;
    a(int b);
a~a();
};
a::~a(){
delete []p;
}
невнимательно имя написал
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
07.07.2012, 23:52  [ТС] #6
уфф ) не то и не то

elivin
у мну проста struct поэтому не обратил внимание...да и вашь код не рабочий.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
07.07.2012, 23:53 #7
std::fill же
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
07.07.2012, 23:59 #8
Цитата Сообщение от xADMIRALx Посмотреть сообщение
да и вашь код не рабочий.
Да ну? Разве что компилятору не нравится, что переменная (точнее, целый массив) объявлена, но не используется. У меня это только warring вызывает, но код рабочий (по крайней мере в gcc).

Сделал переменные q, w и e публичными и добавил строку
C++
1
std::cout <<seliimasiv[105].q << std::endl;
Вот, что выдаёт:
Миниатюры
Проинициализировать класс массивов который имеет конструктор по умолчанию  
castaway
08.07.2012, 00:07
  #9

Не по теме:

xADMIRALx, обрати внимание на то, что следует обязательно добавить библиотеки SDL_ttf, GL и GLU.





Не по теме:

Шучу конечно.

xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
08.07.2012, 00:10  [ТС] #10
Jupiter
Ума не приложу как он тут реализовывается ?

elivin
Да точна если
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class a
{
public:
int q;
 a(int i)
{
q = i;
}
}
int main()
{
 a ss[55] = 5;
cout << ss[3].q;
return 0;
}
то все отлично,а у меня вот так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class a
{
public:
char s[120];
int q;
a(int i,char *p)
{
memset(s,'\0',120);
q = i;
for (int a = 0; *p;a++,p++)
s[a] = *p;
}
}
 
int main()
{
 a f[22] = 2,"3f3f";//ошибка
cout << f[3].s
return 0;
}

Не по теме:


lazybiz
честно говоря не понял в чем суть шутки..%(

Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
08.07.2012, 00:14 #11
Цитата Сообщение от xADMIRALx Посмотреть сообщение
Ума не приложу как он тут реализовывается ?
C++
1
2
3
4
5
6
7
class test {
public:
    test(int i = 0) { }
};
//
test arr[500];
std::fill(a, a + 500, test(4));
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
08.07.2012, 00:16  [ТС] #12
Пасибо,только вот наверное в маем случии не поможет ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class a
{
public:
char s[120];
int q;
a(int i,char *p)
{
memset(s,'\0',120);
q = i;
for (int a = 0; *p;a++,p++)
s[a] = *p;
}
}
 
int main()
{
 a f[22] = 2,"3f3f";//ошибка
cout << f[3].s
return 0;
}
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
08.07.2012, 00:17 #13
lazybiz, сделал мой день


xADMIRALx, объявляй так:
C++
1
a f[22] = a(2, "3f3f");
Хотя у меня это warring вызывает. Лучше так:
C++
1
2
char s[]="3f3f";
a f[22] = a(2,s);
xADMIRALx
67 / 61 / 1
Регистрация: 09.06.2012
Сообщений: 291
08.07.2012, 00:25  [ТС] #14
так тоже объявлял,не хочет (

Добавлено через 3 минуты
Ошибка
C++
1
2
    error C2075: per1: для инициализации массива требуются фигурные скобки      error C2539: new: для "a" отсутствует конструктор по умолчанию для инициализации массивов объектов  
    3   IntelliSense: для агрегатного объекта требуется инициализация с использованием "{...}"
elivin
65 / 65 / 1
Регистрация: 04.01.2012
Сообщений: 231
Записей в блоге: 1
08.07.2012, 00:25 #15
Цитата Сообщение от xADMIRALx Посмотреть сообщение
так тоже объявлял,не хочет (
Можешь весь код с таким методом объявления привести?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2012, 00:25
Привет! Вот еще темы с ответами:

От класса String наследовать новый класс, который имеет проверку на превышение размера строки - C++
Доброго времени суток! Решаю задачи из учебника Роберта Лафоре ООП в C++. До этой задачи все решал сам и успешно, а тут встал в...

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

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


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

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

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