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

Агрегация массива в класс - C++

Восстановить пароль Регистрация
 
Skaarj
2 / 2 / 1
Регистрация: 28.06.2013
Сообщений: 52
06.05.2014, 23:44     Агрегация массива в класс #1
Решил описать класс вектора для работы с opengl, но не понимаю как можно передать данные объекту через массив путём агрегации. Инициализировать каждый элемент не удобно и очень громоздко получается. Хочу что то вроде такого:
C++
1
2
3
4
5
6
7
8
9
10
11
Class vector3 {
float coord[3];
....
};
 
void draw()
{
vector3 v[X].coord = {{x,y,z}, {x1,y1,z1}, ...};
glvertexfv(v[1]);
....
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 23:44     Агрегация массива в класс
Посмотрите здесь:

C++ Передача массива в класс
Класс строка, класс текст, агрегация C++
Агрегация по ссылке C++
Агрегация ООП C++
C++ класс динамического массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
07.05.2014, 10:57     Агрегация массива в класс #2
Цитата Сообщение от Skaarj Посмотреть сообщение
vector3 v[X].coord = {{x,y,z}, {x1,y1,z1}, ...};
так это уже не инициализация, а присваивание, а так кажется низя делать,
т.е Вам так не хочется?
C++
1
2
3
4
5
6
7
vector3 v[X].coord[0] = x;
vector3 v[X].coord[1] = y;
vector3 v[X].coord[2] = z;
 
vector3 v[X].coord[0] = x1;
vector3 v[X].coord[1] = y1;
vector3 v[X].coord[2] = z1
;
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.05.2014, 11:13     Агрегация массива в класс #3
конструктор в классе вектора сделай
C++
1
2
3
4
5
6
7
8
9
10
Class vector3 {
  float coord[3];
public:
  vector3(int a, int b, int c){
    coord[0]=a;
    coord[1]=b;
    coord[2]=c;
  }
  ....
};
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
07.05.2014, 11:18     Агрегация массива в класс #4
Skaarj, c++11 рулит (то есть нужен -std=c++0x)
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
38
39
40
41
42
43
44
45
46
47
#include <iostream>
#include <vector>
 
using namespace std;
 
class A
{
    public:
        A(const vector<vector<int>> &);
        
        void print();
    private:
        vector<vector<int>> myIntVector;
};
 
A::A(const vector<vector<int>> &toCopy):
    myIntVector(toCopy)
{
    ;
}
 
void A::print()
{
    for (unsigned int i = 0; i < myIntVector.size(); i++)
    {
        for (unsigned int j = 0; j < myIntVector[i].size(); j++)
            cout << myIntVector[i][j] << " ";
        cout << endl;
    }
}
 
int main()
{
    vector<vector<int>> intVector = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };  //Можно
    
    intVector = {{1,2,3}, {1,4,6}, {1,6,3,8}};  //То что можно и нужно
    
    A a(intVector);   //ну это и так можно
    a.print();
    
    cout << endl;
    
    A b({ {1, 2}, {1}, {1, 2, 3, 5, 6} }); //Тоже можно
    b.print();
    
    cin.get();
}
называется это дело extended inializer list по-моему. И не надо лишних телодвижений.
aLarman
07.05.2014, 11:25
  #5

Не по теме:

dimcoder, и бедный студент начал качать линукс, gcc\g++ 4.8.2 и т.д хД

dimcoder
07.05.2014, 11:41
  #6

Не по теме:

aLarman, ну mingW пусть качает. Ладно бы если у ТС стоял бы борланд 3.1 , было бы не в тему говорить о 11, но он то с openGL возится. Короче выбор за skaarj'ом.
PS Сам думаю на линукс потихоньку переходить, знакомиться что-ли.

Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
07.05.2014, 12:03     Агрегация массива в класс #7
Цитата Сообщение от dimcoder Посмотреть сообщение
Ладно бы если у ТС стоял бы борланд 3.1, ..., но он то с openGL возится.
Тем более следует работать в Visual Studio
Skaarj
2 / 2 / 1
Регистрация: 28.06.2013
Сообщений: 52
07.05.2014, 17:59  [ТС]     Агрегация массива в класс #8
Всем спасибо за советы. Сделал через конструктор, всё же удобнее и нагляднее, чем присваивание значения каждому полю. До последнего думал, что можно как то сделать стандартными средствами.

Новый стандарт учту на будущие, пока нету времени его изучать, так как старый ещё далёк от полного понимания Пишу на VS2010
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 09:04     Агрегация массива в класс
Еще ссылки по теме:

C++ Создайте класс динамического массива, в котором реализована проверка выхода за границы массива
C++ Взаимная агрегация
Наследование, композиция и агрегация C++

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

Или воспользуйтесь поиском по форуму:
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
08.05.2014, 09:04     Агрегация массива в класс #9
Цитата Сообщение от Skaarj Посмотреть сообщение
Пишу на VS2010
там есть чуть чуть 11го стандарта
Yandex
Объявления
08.05.2014, 09:04     Агрегация массива в класс
Ответ Создать тему
Опции темы

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