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

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

Войти
Регистрация
Восстановить пароль
 
Skaarj
2 / 2 / 1
Регистрация: 28.06.2013
Сообщений: 53
#1

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

06.05.2014, 23:44. Просмотров 494. Ответов 8
Метки нет (Все метки)

Решил описать класс вектора для работы с 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++
Здравствуйте, не знал как правильно назвать тему, если ошибся - простите. Пишу симулятор банкомата, есть класс Card и User. Пользователь...

Композиция/Агрегация - C++
Не понимаю четкой разницы между этими понятиями. Нашел тему на форуме http://www.cyberforum.ru/cpp-beginners/thread1312947.html, но из...

Агрегация ООП - C++
Здравствуйте. Помогите разобраться с одной деталью. Вот код:#include <iostream> #include <conio.h> #include <string> using namespace...

Классы и агрегация - C++
Всем привет. Ребята, может кто дать рабочие примеры агрегации в классах) Буду очень благодарен, а то гугл особых результатов не принес

Агрегация по ссылке - C++
Надо описать наследование классов используя агрегацию по ссылке, текст программы я написал, н окомпилятор выдает ошибку( подскажите как ее...

Наследование, композиция и агрегация - C++
#include <iostream> #include <string> #include <vector> using namespace std; class A { public: A() { cout<<"Of A +"<<...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
642 / 563 / 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
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 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
Полярный
458 / 431 / 67
Регистрация: 11.09.2011
Сообщений: 1,129
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
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
07.05.2014, 12:03     Агрегация массива в класс #7
Цитата Сообщение от dimcoder Посмотреть сообщение
Ладно бы если у ТС стоял бы борланд 3.1, ..., но он то с openGL возится.
Тем более следует работать в Visual Studio
Skaarj
2 / 2 / 1
Регистрация: 28.06.2013
Сообщений: 53
07.05.2014, 17:59  [ТС]     Агрегация массива в класс #8
Всем спасибо за советы. Сделал через конструктор, всё же удобнее и нагляднее, чем присваивание значения каждому полю. До последнего думал, что можно как то сделать стандартными средствами.

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

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { friend class diagonal; ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Передача в класс массива - C++
Доброго времени суток! Вообщем, надо передать в класс class Range { private: int size; int* Arr; public: Range(int size,...

Передача массива в класс - C++
Как правильно передать одномерный массив в класс? И если можно то пример передачи.. Спасибо!


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

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

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