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

Массивы объектов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 86, средняя оценка - 4.99
SecretSilent
 Аватар для SecretSilent
76 / 77 / 2
Регистрация: 16.02.2010
Сообщений: 578
01.04.2011, 22:35     Массивы объектов #1
у меня в классе имеется конструктор с параметрами. как мне создать массив объектов, вызывая при этом этот конструктор? к примеру
C++
1
Neuron RNN_1(N, Linear)[P];
будет ли верным?
т.е. Neuron - мой тип данных
RNN_1(N, Linear)[P] - P объектов этого типа с параметрами N и Linear.


если нет, то как по-другому это правильно делать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 22:35     Массивы объектов
Посмотрите здесь:

Как создавать массивы объектов, и как к ним обращаться? C++
C++ Программирование на С++ с использованием классов. Массивы объектов. Наследование
Программирование на С++ с использованием классов. Массивы объектов. Наследование C++
Массивы объектов. Наследование C++
C++ В программе реализовать возможность записи объектов в файл и чтения объектов из файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
01.04.2011, 22:48     Массивы объектов #2
SecretSilent, Типо этого ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
class Data{
private:
  int a_, b_;
public:
  Data(int a, int b) : a_(a), b_(b){}
};
 
int main(){
  const size_t N = 2;
  Data a[N] = {Data(1, 2), Data(3, 4)};
  return 0;
}
SecretSilent
 Аватар для SecretSilent
76 / 77 / 2
Регистрация: 16.02.2010
Сообщений: 578
01.04.2011, 23:01  [ТС]     Массивы объектов #3
asics, а если мне надо массив из 500 объектов? мне все вручную прописывать?
asics
Freelance
Эксперт C++
 Аватар для asics
2839 / 1776 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
01.04.2011, 23:11     Массивы объектов #4
Цитата Сообщение от SecretSilent Посмотреть сообщение
а если мне надо массив из 500 объектов? мне все вручную прописывать?
Ну так дело ваше, если не лень, то вперед
SecretSilent
 Аватар для SecretSilent
76 / 77 / 2
Регистрация: 16.02.2010
Сообщений: 578
01.04.2011, 23:16  [ТС]     Массивы объектов #5
asics, а нормальный метод есть?
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
01.04.2011, 23:28     Массивы объектов #6
Цитата Сообщение от SecretSilent Посмотреть сообщение
asics, а нормальный метод есть?
Можно еще так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
class Data{
private:
  int a_, b_;
public:
  Data(int a, int b) : a_(a), b_(b){}
};
 
int main(){
  const size_t N = 500;
  Data* a[N];
  for(int i=0; i<N; i++)
      a[i] = new Data(i, i+1); //например
  return 0;
}
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
01.04.2011, 23:31     Массивы объектов #7
Сначала создать массив объектов, сконструированных по умолчанию, а потом в цикле "переконструировать" каждый из них каким-нибудь методом reconstruct, который делает то же, что и ваш конструктор изначально (это если с динамикой возиться неохота).
Mr.X
Эксперт С++
 Аватар для Mr.X
2807 / 1583 / 248
Регистрация: 03.05.2010
Сообщений: 3,698
02.04.2011, 01:19     Массивы объектов #8
Если параметры, которые вы хотите передать объектам массива, известны на этапе компиляции, то можно шаблоны использовать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
template<int N>
struct  A
{
    static const int n_ = N;
    //-----------------------------------------------------------------------------------
    A()
    {
        std::cout << n_
                  << std::endl;
    }
};
 
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    A<5>   arr_5   [5]; 
    A<10>  arr_10  [10];    
}
Добавлено через 44 минуты
Ну а при использовании векторов можно для создания их элементов любые конструкторы вызывать:
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
26
27
28
29
30
31
32
33
34
35
36
37
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
#include <vector>
/////////////////////////////////////////////////////////////////////////////////////////
struct  A
{
    int  a_;
    int  b_;
    //-----------------------------------------------------------------------------------
    A(int  a, int  b) : a_(a), b_(b)
    {
        std::cout << a_
                  << '\t'
                  << b_
                  << std::endl;
    }
    //-----------------------------------------------------------------------------------
    A(const A&  a)
    {
        a_ = a.a_;
        b_ = a.b_;
        std::cout << "copy "
                  << a_
                  << '\t'
                  << b_
                  << std::endl;
    }
};
 
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::vector<A>  A_vect;
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    A_vect  a_1_2(5,  A(1, 2)); 
    A_vect  a_3_4(10, A(3, 4));     
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 08:35     Массивы объектов
Еще ссылки по теме:

C++ Массивы объектов
C++ Массивы объектов в С++
Конструктор копировщик объектов, содержащих массивы C++

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

Или воспользуйтесь поиском по форуму:
SecretSilent
 Аватар для SecretSilent
76 / 77 / 2
Регистрация: 16.02.2010
Сообщений: 578
02.04.2011, 08:35  [ТС]     Массивы объектов #9
Спасибо всем большое!
Unforgiven_00, я так и хотела делать. просто думала, может, другой, "более красивый" метод есть
Yandex
Объявления
02.04.2011, 08:35     Массивы объектов
Ответ Создать тему
Опции темы

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