Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
 Аватар для polimorf96
9 / 9 / 1
Регистрация: 02.08.2010
Сообщений: 270

Межфайловое взаимодействие vector-ов

02.12.2011, 14:09. Показов 1085. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
недавно столкнулся с задачей. Есть файлы:
unit1.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "loadFile.h"
 
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
extern AnsiString nameOfTest;
extern AnsiString textOfTest;
extern int nofQuestions;
 
//////???????????extern vector<question> questions
AnsiString openFile="";   ////открытый файл тестов
 
int currQuest=0; ////номер текущего вопроса
 
/////дальше идут разные определения функций
unit1.h:
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
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <ExtCtrls.hpp>
#include <Dialogs.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TRichEdit *QuestionEdit;
        TLabel *Label1;
        TCheckBox *Ans1Check;
        TCheckBox *Ans2Check;
        TCheckBox *Ans3Check;
        TCheckBox *Ans4Check;
        TButton *OpenButton;
        TOpenDialog *OpenTestDialog;
        TButton *NextButton;
        void __fastcall ExitButtonClick(TObject *Sender);
        void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
        void __fastcall OpenButtonClick(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
(файл unit1.h был сгенерирован автоматически-я в него ничего и не добавлял)
loadfile.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//---------------------------------------------------------------------------
 
#ifndef loadFileH
#define loadFileH
#include <vcl.h>
#include <fstream.h>
#include "question.h"
//------------------------------
const int MAX_NAME_OF_TEST=25; ////максимальная длинна названия теста
const int MAX_TEXT_OF_TEST=1000;///максимальная длинна предисловия к тесту
const int MAX_QUESTIONS=100;
const int MAX_TEXT_OF_QUESTION=100;
const int MAX_TEXT_OF_ANSWER=50;
//---------------------------------------------------------------------------
bool initQuestions(AnsiString pach);     ////загрузить вопросы из файла с путём path  ,возвращает 0 при успехе
 
//---------------------------------------------------------------------------
#endif
loadfile.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
//---------------------------------------------------------------------------
 
 
#pragma hdrstop
#include "loadFile.h"
#include <stdlib.h> ////для atoi
#include <vector.h>
 
int nofQuestions=0;       ///кол-во вопросов в файле
AnsiString nameOfTest="";   ////название теста
AnsiString textOfTest="";   ///предисловие к тесту
 
vector<question> questions;
 
 
AnsiString ans[MAX_ANS]={"0"};     ////для создания объектов  вопросов
bool ansb[MAX_ANS]={0};
 
//--------------------------------------------------------------------------
bool initQuestions(AnsiString path)
{
        /////здесь длинная функция.
}
 
//---------------------------------------------------------------------------
 
#pragma package(smart_init)
и ещё несколько -но они не относятся к решению проблемы.
и так:
в файле loadfile.cpp есть определения нескольких переменных
C++
1
2
3
int nofQuestions=0;       ///кол-во вопросов в файле
AnsiString nameOfTest="";   ////название теста
AnsiString textOfTest="";   ///предисловие к тесту
и контейнера:
C++
1
vector<question> questions;
для того чтобы я мог в файле unit1.cpp работать с переменными я объявил их:
C++
1
2
3
extern AnsiString nameOfTest;
extern AnsiString textOfTest;
extern int nofQuestions;
так же мне нужно в этом файле работать с контейнером vector<question> questions
и я написал следующее:
C++
1
extern vector<question> questions
однако когда с записью extern int или extern AnsiString всё нормально(ошибок нет, переменные видны), запись extern vector<question> questions не работает-компилятор выдаёт ошибку Declaratoin syntax error .
Вопрос-как мне сделать так чтобы вектор questions был виден в Unit1 ?
Спасибо за помощь.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.12.2011, 14:09
Ответы с готовыми решениями:

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Цикл: Создайте класс Matrix на базе вектора vector<vector<int>>.
Создайте класс Matrix на базе вектора vector&lt;vector&lt;int&gt;&gt;. Определите операторную функцию ostream\&amp; operator&lt;&lt;(ostream\&amp;,...

2
 Аватар для xAtom
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
02.12.2011, 14:33
В каждом файле .cpp
C++
1
2
#include <vector>
using namespace std;
1
 Аватар для polimorf96
9 / 9 / 1
Регистрация: 02.08.2010
Сообщений: 270
02.12.2011, 15:05  [ТС]
и вправду, так работает. Но почему?
ведь файл <vector.h> и так включён в файл unit.cpp(правда косвенно-в файл fileload.h включён vector.h а в unit1-fileload.h . )
Зачем же нужно полуается повторно включать файл vector.h в unit1? или же файл vector.h не включается если он включён в другие файлы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.12.2011, 15:05
Помогаю со студенческими работами здесь

vector<Struct2{int,vector<struct1>}> или множественное наследование ...
Здравствуйте! Помогите, пожалуйста. Есть такие данные: typedef struct { int x; int y; // координаты...

Ошибка [Linker error] undefined reference to `Vector::Vector(int)'
Добрый день. Делал по методички, и почему-то валятся ошибки... файл lab9_main.cpp #include &lt;iostream&gt; #include...

Как сложить два vector и записать в третий vector ?
Не получается сложить два вектора по элементно и записать в третий . Складываю уже переведенные числа из десятичной в восьмеричной системе...

Как корректно скопировать vector в vector внутри класса
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

Указатель на объект вектор в векторе vector < vector<int>* >*
Дело касается вот чего, есть такая вот незатейлевая вещь. #include &lt;vector&gt; #include &lt;iostream&gt; int main( ) { using...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru