Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Проблема с include'ом vector'а


Автор: Altaire 23.5.2010, 22:28
Проблема аключается в том, что при include'ировании <vector> в объявлении класса выдаётся ошибка дупликации некоторых методов vector'а в главном файле и в файле инициализации класса.

Чтобы было более понятно:

Код

//proj_angi.cpp

...
#include "scene.h"

void main()
{
...
}

//scene.h

#ifndef SCENE_H
#define SCENE_H

#include <vector>

class Scene
{
public:
    Scene();
...
};

#endif

//scene.cpp

#include "scene.h"

Scene::Scene()
{
...
}
...


При линковании выдаёт ошибки:

Info :Transferring to C:\BC5\BIN\tlink.exe @C:\BC5\works\proj0000.r$p
Error:  (1,1):std::vector<bool>::insert_aux(std::vector<bool>::iterator,... defined in module scene.cpp is duplicated in module proj_angi.cpp
Error:  (1,1):std::vector<bool>::resize(unsigned int,bool) defined in module scene.cpp is duplicated in module proj_angi.cpp
Error:  (1,1):std::vector<bool>::insert(std::vector<bool>::iterator,const bool far&) defined in module scene.cpp is duplicated in module proj_angi.cpp
Error:  (1,1):std::vector<bool>::insert(std::vector<bool>::iterator,short,... defined in module scene.cpp is duplicated in module proj_angi.cpp
Error:  (1,1):std::vector<bool>::flip() defined in module scene.cpp is duplicated in module proj_angi.cpp
Error:  (1,1):std::swap(std::vector<bool>::reference) defined in module scene.cpp is duplicated in module proj_angi.cpp
Fatal:  (1,1): Bad object file record in module proj_angi.cpp near module file offset 0x000058A1

Помогите, чем сможете...

Автор: SVN74 23.5.2010, 22:33
#include "scene.cpp"

Автор: Altaire 23.5.2010, 22:35
Нет, то же самое...

Автор: SVN74 23.5.2010, 22:43
А что у вас еще инклюдится в proj_angi.cpp?, также переправьте #include <vector> на #include <vector.h>
Бюлдер любит полные имена




Автор: Altaire 23.5.2010, 22:46
Код

#include <conio.h>
#include <graphics.h>
#include "robot.h"
#include <bios.h>
#include <dos.h>
#include <iostream.h>
#include "bullet.h"


Ничто из этого(и robot и bullet) не зависит от вектора.

Автор: Alek86 23.5.2010, 22:47
SVN74, что это еще за извращения, cpp подключать?
может компилер старый, ODR (one definition rule) не поддерживает?

а лучше покажи, как ты именно vector<bool> используешь

Автор: Altaire 23.5.2010, 22:47
Полное имя тоже не влияет

Добавлено через 1 минуту и 15 секунд
vector пока вообще не использовал.
Юзаю Borland C++ 5.02

Автор: SVN74 23.5.2010, 23:02
Перенесите #include <vector.h> в  scene.cpp

Автор: Altaire 23.5.2010, 23:06
Вроде работает, но в объявлении класса требуется объявления vector<Bullet>...
А это уже опять с самого начала...

Автор: Alek86 23.5.2010, 23:08
Altaire, нет ли возможности поменять компилер?

Автор: SVN74 23.5.2010, 23:09
Цитата(Altaire @  23.5.2010,  23:06 Найти цитируемый пост)
Вроде работает, но в объявлении класса требуется объявления vector<Bullet>...
А это уже опять с самого начала... 

Проверьте еще раз. Как вы создавали ваш Unit? Может Бюлдер уже добавил его автоматически, отключите объявление  в главном файле и проверьте видимость класса...

Автор: Altaire 23.5.2010, 23:10
Alek86, На какой, например?

Автор: Alek86 23.5.2010, 23:27
visual studio 2005 или больше

Автор: Altaire 23.5.2010, 23:39
Приложение основано на BGI графике для DOS, а разработку под DOS Visual Studio, вроде, не поддерживает...

P.S. Visual Studio скорее не компилер, а среда разработки... Хотя это к делу не относится.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)