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

Работа с классами - C++

Восстановить пароль Регистрация
 
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72
20.01.2014, 10:42     Работа с классами #1
Имеется заголовочный файл
В нем создаю два класса Vector и MyCamera.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Vector {
  public:
  float x,y,z;
};
//----------------------------------------------------------------
 
class MyCamera {
  public:
    Vector m_vPosition; // Позиция камеры
    Vector m_vView;     // Направление камеры
    Vector m_vUpVector; // Вертикальный вектор
    MyCamera();
    void PositionCamera(float positionX, float positionY, float positionZ,
                        float viewX, float viewY, float viewZ,
                        float upVectorX, float upVectorY, float upVectorZ);
    void MoveCamera(float speed);
};
 
extern MyCamera *d_Camera;
В классе MyCamera объявляю объекты класса Vector.
Но выдает вот такую ошибку: E2303 Type name expected
Скажите, что я сделал неправильно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2014, 10:42     Работа с классами
Посмотрите здесь:

Работа с классами C++
C++ Работа с классами.
работа с классами в С++ C++
C++ Работа с классами
Работа с классами C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Enotniy
 Аватар для Enotniy
96 / 95 / 14
Регистрация: 15.01.2014
Сообщений: 283
20.01.2014, 10:48     Работа с классами #2
Цитата Сообщение от Vlad708 Посмотреть сообщение
Но выдает вот такую ошибку: E2303 Type name expected
Скажите, что я сделал неправильно?
Не правильно расположены заготовки класса или же описания не хватает к методам, или надо разделить на h и cpp файлы ваш класс, не могу сказать точно, так как не вижу всего кода

Судя по тому что у вас написано - не хватает конструктора для Vector
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
20.01.2014, 10:55     Работа с классами #3
В какой строке ругается? Я не вижу тут ошибок.
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72
20.01.2014, 11:28  [ТС]     Работа с классами #4
Цитата Сообщение от Enotniy Посмотреть сообщение
Не правильно расположены заготовки класса или же описания не хватает к методам, или надо разделить на h и cpp файлы ваш класс, не могу сказать точно, так как не вижу всего кода

Судя по тому что у вас написано - не хватает конструктора для Vector
Вот заголовочный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Vector {
  public:
  float x,y,z;
};
//----------------------------------------------------------------
 
class MyCamera {
  public:
    Vector m_vPosition; // Позиция камеры
    Vector m_vView;     // Направление камеры
    Vector m_vUpVector; // Вертикальный вектор
    MyCamera();
    // Изменяется позиция, направление камеры
    void PositionCamera(float positionX, float positionY, float positionZ,
                        float viewX, float viewY, float viewZ,
                        float upVectorX, float upVectorY, float upVectorZ);
    // Движение камеры вперёд-назад
    void MoveCamera(float speed);
};
 
extern MyCamera *d_Camera;

Вот .cpp файл с реализацией классов

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
MyCamera::MyCamera() {
  // Инициализация вектора позиции в нулевые координаты
  Vector vZero = {0.0f, 0.0f, 0.0f};
  Vector vView = {0.0f, 1.0f, 0.5f}; // Иниц. вектора взгляда
  Vector vUp = {0.0f, 0.0f, 1.0f}; // Инициальзация верт. вектора
 
  m_vPosition = vZero;
  m_vView = vView;
  m_vUpVector = vUp;
}
 
void MyCamera::PositionCamera(float positionX, float positionY, float positionZ,
                              float viewX, float viewY, float viewZ,
                              float upVectorX, float upVectorY, float upVectorZ) {
  Vector vPosition = {positionX, positionY, positionZ};
  Vector vView = {viewX, viewY, viewZ};
  Vector vUpVector = {upVectorX, upVectorY, upVectorZ};
 
  m_vPosition = vPosition;
  m_vView = vView;
  m_vUpVector = vUpVector;
}
 
//--------------------------------------------------------------------
 
void MyCamera::MoveCamera(float speed) {
  Vector vVector = {0};
 
  vVector.x = m_vView.x - m_vPosition.X;
  vVector.y = m_vView.y - m_vPosition.Y;
  vVector.Z = m_vView.Z - m_vPosition.Z;
 
  m_vPosition.x += vVector.x * speed;
  m_vPosition.z += vVector.z * speed;
  m_vView.x += vVector.x * speed;
  m_vView.z += vVector.z * speed;
}
Добавлено через 2 минуты
Цитата Сообщение от castaway Посмотреть сообщение
В какой строке ругается? Я не вижу тут ошибок.
ругается на вот эти объявления:

Vector m_vPosition; // Позиция камеры
Vector m_vView; // Направление камеры
Vector m_vUpVector; // Вертикальный вектор
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
20.01.2014, 11:56     Работа с классами #5
Vlad708, вам же Enotniy сказал: где конструкторы для Вектор?
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72
20.01.2014, 12:07  [ТС]     Работа с классами #6
Цитата Сообщение от Nullik Посмотреть сообщение
Vlad708, вам же Enotniy сказал: где конструкторы для Вектор?
Ну допустим я сделал конструктор класса vector

C++
1
2
3
4
5
Vector::Vector() {
  x = 0;
  y = 0;
  z = 0;
}
и что дальше, как мне указать это в классе MyCamera?
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
20.01.2014, 12:18     Работа с классами #7
Vlad708, так указывать не нужно, вы знаете как работают конструкторы и деструкторы?
Vlad708
4 / 4 / 0
Регистрация: 04.11.2012
Сообщений: 72
20.01.2014, 12:32  [ТС]     Работа с классами #8
Цитата Сообщение от Nullik Посмотреть сообщение
Vlad708, так указывать не нужно, вы знаете как работают конструкторы и деструкторы?
Дело в том, что я делаю как написано в уроке... вот ссылка: http://masandilov.ru/opengl/camera

И не понимаю, что писать в конструкторе класса, который является вспомогательным для класса MyCamera.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2014, 12:54     Работа с классами
Еще ссылки по теме:

C++ Работа с классами
Работа с классами C++
C++ Работа с классами

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

Или воспользуйтесь поиском по форуму:
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
20.01.2014, 12:54     Работа с классами #9
может быть надо переименовать вектор, т.к. он уже есть в c++ CLI ?
те.е, назовите его MyVector.
Yandex
Объявления
20.01.2014, 12:54     Работа с классами
Ответ Создать тему
Опции темы

Текущее время: 13:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru