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

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

Войти
Регистрация
Восстановить пароль
 
Homamilae
1 / 1 / 0
Регистрация: 14.11.2010
Сообщений: 48
#1

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

25.08.2011, 16:24. Просмотров 717. Ответов 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?
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2011, 16:24     Массив объектов
Посмотрите здесь:

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

Массив объектов - C++
Здравствуйте,помогите починить программу,не знаю в чем причина,мб недопонимаю.... Задание: Элементы масива которые больше 10 заменить на 1,...

Массив объектов - C++
Задумка: Сделать некую подобию базы данных, список из &quot;объектов&quot;. К объектам привязаны соответствующие данные разных типов (int, char и...

Массив объектов - C++
Можно так написать? class A {бла-бла-бла} void main() { int x=3; A *arr = new A; }

Массив объектов - C++
Здравствуйте.Нужна помощь с программой, не могу создать массив объектов. В своем коде удалось написать только 1 объект, а нужно что-бы их...

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

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

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

Массив объектов - C++
Создать массив объектов разного типа невозможно. Но, наверное, можно создать массив объектов, поле которых, будет содержать указатель на...

массив объектов - C++
Почему у меня так много объектов? Должно быть два, а конструктор вызывается n*n раз. Почему? #include &lt;iostream&gt; using namespace...

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

Массив объектов, деструктор - C++
class cA { int r; public: cA(int t){r=t; cout &lt;&lt; &quot;cA konstruktor &quot; &lt;&lt; r &lt;&lt; endl;}; ~cA(void){cout &lt;&lt; &quot;cA destructor &quot; &lt;&lt; r &lt;&lt;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LosAngeles
Заблокирован
25.08.2011, 16:33     Массив объектов #2
vector<vector<vertex>>
или vector<vertex>
-=ЮрА=-
Заблокирован
Автор 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];
nameless
Эксперт C++
333 / 297 / 14
Регистрация: 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]);
alkagolik
Заблокирован
25.08.2011, 17:11     Массив объектов #5
двумерный динамический массив
ДВУМЕРНЫЕ МАССИВЫ
Сыроежка
Заблокирован
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 также мнобю взяты "с потолка". Вам нужно будет размерность вашего двумерного массива и значения для инициализации указать те, которые вам нужны.

Но проще будет объявить в вашем классе конструктор по умолчанию, то есть тот, который не имеет параметров. Тогда бы вы свой двумерный массив могли определить так, как в первом моем примере.
Yandex
Объявления
25.08.2011, 19:01     Массив объектов
Ответ Создать тему
Опции темы

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