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

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

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

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

http://www.cyberforum.ru/cpp-beginners/thread1766835.html
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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Массив объектов (C++):

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

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

С++ массив объектов
Люди начался новый учебный год опять обращаюсь за помощью 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
Эксперт С++
338 / 302 / 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
Привет! Вот еще темы с решениями:

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

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

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

Массив объектов
Задумка: Сделать некую подобию базы данных, список из &quot;объектов&quot;. К объектам...


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

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

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