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

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

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

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

06.05.2014, 23:44. Просмотров 500. Ответов 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]);
....
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 23:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Агрегация массива в класс (C++):

Класс строка, класс текст, агрегация - C++
12. Текст (2 класса: строка, текст находятся в отношении агрегации) Конструкторы: по умолчанию, с параметрами и копирования. ...

Взаимная агрегация - C++
Здравствуйте, не знал как правильно назвать тему, если ошибся - простите. Пишу симулятор банкомата, есть класс Card и User. Пользователь...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
;
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,925
Записей в блоге: 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;
  }
  ....
};
1
dimcoder
Полярный
462 / 434 / 68
Регистрация: 11.09.2011
Сообщений: 1,135
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 по-моему. И не надо лишних телодвижений.
1
aLarman
07.05.2014, 11:25
  #5

Не по теме:

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

0
dimcoder
07.05.2014, 11:41
  #6

Не по теме:

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

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

Новый стандарт учту на будущие, пока нету времени его изучать, так как старый ещё далёк от полного понимания Пишу на VS2010
0
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
08.05.2014, 09:04 #9
Цитата Сообщение от Skaarj Посмотреть сообщение
Пишу на VS2010
там есть чуть чуть 11го стандарта
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2014, 09:04
Привет! Вот еще темы с ответами:

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

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++ ...

Создайте класс динамического массива, в котором реализована проверка выхода за границы массива - C++
Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: , =, +, -,++...

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


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

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

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