С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
1

Массив объектов

25.08.2011, 16:24. Просмотров 770. Ответов 5
Метки нет (Все метки)

Доброго времени суток... Подскажите пожалуйста у меня есть следующий код:

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
class vertex{
public:
 
  float x;
  float y;
  float z;
  float nx;
  float ny;
  float nz;
 
 
   vertex(float _x,float _y,float _z){
    x=_x;y=_y;z=_z;
  }
 
void normalize_normal(){
    float len = 1.0f/sqrtf(nx*nx+ny*ny+nz*nz);
    nx*=len;ny*=len;nz*=len;
  }
  };
 
calc_normals(v0,v1,v2){...}
 
 
void build_land(){
  glBegin(GL_TRIANGLES);
  for (unsigned int i=0;i<hwidth-1;i++)
    for (unsigned int j=0;j<hheight-1;j++){
 
      vertex v00( i  , (hmap+(  i)+(  j)*hwidth)->g, j  );
      vertex v10( i+1, (hmap+(i+1)+(  j)*hwidth)->g, j  );
      vertex v01( i  , (hmap+(  i)+(j+1)*hwidth)->g, j+1);
      vertex v11( i+1, (hmap+(i+1)+(j+1)*hwidth)->g, j+1);
 
      calc_normals(v00,v10,v11);
      v00.normalize_normal();
      v10.normalize_normal();
      v11.normalize_normal();
 
          }
  glEnd();
}
Каким образом можно было бы создать двумерный массив элементов vertex?
Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2011, 16:24
Ответы с готовыми решениями:

Написать класс Матрица. Массив объектов класса Массив
Написать класс Матрица (в данном случае матрица – массив объектов класса Массив...

массив объектов
добрый вечер всем. Возникла такая проблема - необходимо создать массив деков...

Массив объектов
Всем привет. Даны три класса. Мне нужно создать массив, в который я смогу...

С++ массив объектов
Люди начался новый учебный год опять обращаюсь за помощью File Имя...

Массив объектов
При решении задачи необходимо, без использования STL, описать класс, который...

5
LosAngeles
Заблокирован
25.08.2011, 16:33 2
vector<vector<vertex>>
или vector<vertex>
1
-=ЮрА=-
Заблокирован
Автор FAQ
25.08.2011, 16:40 3
Думаю можно просто в лоб, вот так
C++
1
2
3
vertex * lpVERTEX = new vertex *[2];
for(int i = 0; i < 2; i++)
pVERTEX[i] = new vertex[1];
1
nameless
Эксперт С++
339 / 303 / 36
Регистрация: 16.06.2009
Сообщений: 486
25.08.2011, 16:48 4
Homamilae,

как вариант:

C++
1
boost::array <boost::array <int, COLS>, ROWS> matrix;
или
C++
1
boost::multi_array <int, 2> matrix(boost::extents[ROWS][COLS]);
1
alkagolik
Заблокирован
25.08.2011, 17:11 5
двумерный динамический массив
1
Сыроежка
Заблокирован
25.08.2011, 19:01 6
Цитата Сообщение от Homamilae Посмотреть сообщение
Доброго времени суток... Подскажите пожалуйста у меня есть следующий код:

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
class vertex{
public:
 
  float x;
  float y;
  float z;
  float nx;
  float ny;
  float nz;
 
 
   vertex(float _x,float _y,float _z){
    x=_x;y=_y;z=_z;
  }
 
void normalize_normal(){
    float len = 1.0f/sqrtf(nx*nx+ny*ny+nz*nz);
    nx*=len;ny*=len;nz*=len;
  }
  };
 
calc_normals(v0,v1,v2){...}
 
 
void build_land(){
  glBegin(GL_TRIANGLES);
  for (unsigned int i=0;i<hwidth-1;i++)
    for (unsigned int j=0;j<hheight-1;j++){
 
      vertex v00( i  , (hmap+(  i)+(  j)*hwidth)->g, j  );
      vertex v10( i+1, (hmap+(i+1)+(  j)*hwidth)->g, j  );
      vertex v01( i  , (hmap+(  i)+(j+1)*hwidth)->g, j+1);
      vertex v11( i+1, (hmap+(i+1)+(j+1)*hwidth)->g, j+1);
 
      calc_normals(v00,v10,v11);
      v00.normalize_normal();
      v10.normalize_normal();
      v11.normalize_normal();
 
          }
  glEnd();
}
Каким образом можно было бы создать двумерный массив элементов vertex?
Спасибо.
Если вы имеете в виду именно двумерный массив, а не какой-нибудь контейнер, то вам при инициализации надо явно задавать значения его элементов, так как у вас нет конструктора вашего класса по умолчанию.

Если бы у вас был конструктор по умолчанию, то вы могли бы определить двумерный массив следующим образом
C++
1
vertex a[ 2 ][ 2 ];
Размерность 2 я взял для примера как произвольное значение.

Но так как у вас нет констурктора по умолчанию, то вам придется при определении двумерного массива явно указывать значения его элементов

C++
1
vertex a[ 2 ][ 2 ] = { { vertex( 1, 2, 3 }, vertex( 1, 2, 3 ) }, { vertex( 1, 2, 3 ), vertex( 1, 2, 3 ) } };
Здесь числа 1, 2, 3 также мнобю взяты "с потолка". Вам нужно будет размерность вашего двумерного массива и значения для инициализации указать те, которые вам нужны.

Но проще будет объявить в вашем классе конструктор по умолчанию, то есть тот, который не имеет параметров. Тогда бы вы свой двумерный массив могли определить так, как в первом моем примере.
1
25.08.2011, 19:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 19:01

Массив объектов
Здравствуйте,помогите починить программу,не знаю в чем причина,мб...

Массив объектов
Здравствуйте.Нужна помощь с программой, не могу создать массив объектов. В...

Массив объектов
Создать массив объектов разного типа невозможно. Но, наверное, можно создать...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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