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

Как правильно объявить vector в классе? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
04.11.2010, 23:27     Как правильно объявить vector в классе? #1
как правильно объявить вектор?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include <algorithm>
 
using namespace std;
extern int map[60][60];
 
vector<pair<int, int> > wave;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
 
CEnemy::CEnemy(int x, int y)
вот таким образом у меня всё работает, а вот как его объявить в классе?
C++
1
2
3
4
5
6
7
8
9
10
#include <vector>
#include <algorithm>
 
using namespace std;
 
class CEnemy  
{
public:
 
    vector<pair<int, int> > wave;
есть где ошибка? что нужно добавить или убрать? плиз
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.11.2010, 23:29     Как правильно объявить vector в классе? #2
Xtir, Так же. оО
Ну можно через typedef.
Вне класса.
C++
1
typedef vector<pair<int, int> > VPII;
В классе.

C++
1
VPII wave;
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
04.11.2010, 23:35  [ТС]     Как правильно объявить vector в классе? #3
да вроде так не получается, может я ещё чего-то не знаю? ))
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
04.11.2010, 23:36     Как правильно объявить vector в классе? #4
Xtir, Ошибки в студию. Весь класс мб скинете?
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
04.11.2010, 23:40  [ТС]     Как правильно объявить vector в классе? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vector>
#include <algorithm>
 
using namespace std;
 
class CEnemy  
{
public:
        vector<pair<int, int> > wave;
    CEnemy(int x, int y);
    virtual ~CEnemy();
 
    void Init();
    bool addWaypoint(int x1, int y1, int x2, int y2);
    void Show(int x, int y);
 
    int copymap[60][60];
    int wp;
    int posx, posy;
 
};
в таком случае ошибка вот такая:
Код
Compiling...
enemy.cpp
d:\program files\microsoft visual studio\vc98\mfc\include\afx.h(438) : fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 1786)
а вот если делать как в первом примере я написал, то всё нормально работает
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
05.11.2010, 00:00     Как правильно объявить vector в классе? #6
Цитата Сообщение от Xtir Посмотреть сообщение
в таком случае ошибка вот такая:
Эта ошибка с твоей программой никак не связана напрямую, попробуй обновить MSVS либо накати сервиспаки.
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
05.11.2010, 00:29  [ТС]     Как правильно объявить vector в классе? #7
блин, может есть другой вариант сделать вектор не глобальным?
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
05.11.2010, 00:38     Как правильно объявить vector в классе? #8
Цитата Сообщение от Xtir Посмотреть сообщение
блин, может есть другой вариант сделать вектор не глобальным?
Ну, можно засунуть в namespace:
C++
1
2
3
4
5
6
7
8
9
10
namespace space_ii
{
    typedef pair<int,int>   pair_ii;
    typedef vector<pair_ii> vector_ii;
 
    vector_ii wave;
}
 
// ...
space_ii::wave.push_back(space_ii::pair_ii(1,2));
Но не думаю что это для твоей задачи подходит, лучше обнови VS
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
05.11.2010, 04:25  [ТС]     Как правильно объявить vector в классе? #9
обновил, тока теперь не хочет со статической библиотекой работать, такую ошибку выдаёт:
Код
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in libcpmtd.lib(delop.obj)
Debug/TankGame.exe : fatal error LNK1169: one or more multiply defined symbols found
со shared нормально работает...
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
05.11.2010, 10:22     Как правильно объявить vector в классе? #10
Цитата Сообщение от Xtir Посмотреть сообщение
со shared нормально работает...
Ну, у тебя дв раза подключается библиотека, вот и ругается. Возможно даже подключаются разные версии, так что для начала удали все объектные файлы и сделай полный ребилд (rebuild all), если ошибка повториться - ищи где два раза подключаешь.
Xtir
11 / 11 / 0
Регистрация: 10.07.2010
Сообщений: 130
05.11.2010, 14:17  [ТС]     Как правильно объявить vector в классе? #11
ну всё, вроде всё получилось, тока из папки debug приложение не хочет запускаться )
и ещё, что бы не создавать новую тему, вопросик не по теме и касается opengl...
напимер есть двумерный массив нулей и единичек, где 0 это пустое место, а 1 - стенка.
Так вот, пробовал делать вот так
C++
1
if(map[(int)posx*60/1200][(int)posy*60/1200] != 1) posx+=0.1;
как-то так, в таком случае мой объект останавливается ещё не доходя до стенки, и не могу придумать как сделать нормально..
пробовал проверять пиксели возле моего объекта, но этот вариант тоже неочень.
Так вот, хотел спросить, знает кто уже проверенный вариант, что бы не изобретать новый велосипед?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2010, 16:23     Как правильно объявить vector в классе?
Еще ссылки по теме:

Как объявить вектор фиксированной длины в классе? C++
C++ Как объявить текстовую константу в классе?
C++ Как правильно объявить статический метод

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

Или воспользуйтесь поиском по форуму:
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
05.11.2010, 16:23     Как правильно объявить vector в классе? #12
Цитата Сообщение от Xtir Посмотреть сообщение
ак вот, хотел спросить, знает кто уже проверенный вариант, что бы не изобретать новый велосипед?
Наверное моя духовная связь с миром программ слишком слаба, поэтому по одной вашей строчке кода не могу делать выводы о всей программе
Yandex
Объявления
05.11.2010, 16:23     Как правильно объявить vector в классе?
Ответ Создать тему
Опции темы

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