Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 10.04.2013
Сообщений: 33

Vector в разных файлах

15.11.2013, 23:55. Показов 1276. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте проблема заключается в следующем. Есть три Юнита.
В Юнит2 создан вектор указателей на абстрактный класс
C++
1
std::vector<CShapes*> ArrayOfShapes;
В Юнит1 С вектором делаются различные действия
C++
1
2
3
ArrayOfShapes.push_back(new CCircle("bub", 5));
Memo1->Lines->Add(ArrayOfShapes.size());
Memo1->Lines->Add(ArrayOfShapes[0]->GetName());
Но почему то в Юнит 3 эти же действия мы совершить не можем.
Все хедеры подключены правильно. В чем может быть проблема, может кто сталкивался с подобным.
Забыл указать CShapes абстрактный, а CCircle наследует его.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2013, 23:55
Ответы с готовыми решениями:

Tdbf, как найти дубли в разных файлах?
есть несколько таблиц .dbf все они одинаковой структуры как с помощью TDBF во всех таблицах найти одинаковые записи по полю Name и...

JS Функционал в разных файлах
растащил код JS По разным файлам и фсе файлы подключил к страницею. Пощёл далще и прищёл к необходимости по клику который отслеживается в...

Программирование в разных файлах
Я только начинающий программист(даже очень начинающий) и начал с языка c++. У меня есть файл main.cpp, где вам дают выбрать какою функцию...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
16.11.2013, 01:33
Цитата Сообщение от igormalanyk Посмотреть сообщение
Но почему то в Юнит 3 эти же действия мы совершить не можем.
С чего бы это? Если в хидере (Unit2.h) было дано описание:
C++
1
extern std::vector<CShapes*> ArrayOfShapes;
, а в одном из CPP-файлов (с твоем случае - в Unit2.cpp) - то, что ты привел первой строкой, без extern, то все прекрасно делается из любого модуля, к которому подключен Unit2.h...
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
16.11.2013, 02:15
но почему тогда без extern в первом юните фунциклирует?
0
1 / 1 / 1
Регистрация: 10.04.2013
Сообщений: 33
16.11.2013, 02:43  [ТС]
Спасибо проблема уже решена
Просто в Юнит 2 перед объявлением добавил extern
А в Юнит 3 после инклудов написал
C++
1
std::vector<CShapes*> ArrayOfShapes;
Кстати Юнит 1 работает и без этого. Понятия не имею почему, Но работает же.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
16.11.2013, 03:17
Цитата Сообщение от igormalanyk Посмотреть сообщение
Просто в Юнит 2 перед объявлением добавил extern
А в Юнит 3 после инклудов написал
Правой рукой чесать левое ухо - не самый очень удобный способ. Самый удобный я описал: хидер содержит только упоминание (объявление) о том, что где-то в проекте есть определение самОй переменной, и теперь любой модуль, к которому такой хидер будет подключен, может использовать переменную (найти ее определение и связать с объявлением - проблема линкера)... Все-таки, надо почитать об отличии объявления (declaration) от определения (definition) переменной.

Цитата Сообщение от igormalanyk Посмотреть сообщение
Юнит 1 работает и без этого
Unit1 это вообще что? Прямо вот так, без предварительного объявления, берет и работает, при том, что сама переменная определена в другом модуле? Не верю. Линкер должен взбунтоваться. Покажи тестовый проект.
0
16.11.2013, 03:36

Не по теме:

Цитата Сообщение от UI Посмотреть сообщение
правой рукой чесать левое ухо - не самый очень удобный способ.
Это зависит от куда руки растут :D...

0
1 / 1 / 1
Регистрация: 10.04.2013
Сообщений: 33
16.11.2013, 14:44  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Не верю. Линкер должен взбунтоваться. Покажи тестовый проект.
Напиши почту я скину проект, на форуме проблемы с загрузкой.
0
16.11.2013, 14:48

Не по теме:

Цитата Сообщение от igormalanyk Посмотреть сообщение
Напиши почту я скину проект, на форуме проблемы с загрузкой.
http://rghost.ru/

0
1 / 1 / 1
Регистрация: 10.04.2013
Сообщений: 33
16.11.2013, 15:28  [ТС]
проект, еще не дописанный
Вложения
Тип файла: zip Bild.zip (13.9 Кб, 1 просмотров)
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33411 / 21521 / 8236
Регистрация: 22.10.2011
Сообщений: 36,922
Записей в блоге: 12
16.11.2013, 15:52
igormalanyk, и чего? Проект нормально компилируется только потому, что у тебя в Unit2.h запихана строка:
C++
23
    extern std::vector<CShapes*> ArrayOfShapes;
А все остальные модули подключают этот заголовочный файл. Как раз то, о чем я и говорил.

P.S. Не надо архивировать всё, что есть в проекте, временные файлы и результаты компиляции можно убрать, тогда все прекрасно грузится на форум...
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
16.11.2013, 16:03
http://rghost.ru/50211367 без extern
0
1 / 1 / 1
Регистрация: 10.04.2013
Сообщений: 33
17.11.2013, 01:08  [ТС]
Дело в том, что пока в Юнит 3 на прописал
C++
1
std::vector<CShapes*> ArrayOfShapes;
Юнит 3 не мог внести изменения в вектор.
А Юніт 1 мог менять вектор как эму пожелается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2013, 01:08
Помогаю со студенческими работами здесь

Общие переменные в разных файлах
Привет. Помогите начинающему плиз! Есть желание разные методы (функции) раскидать по разным файлам одного проекта. Проблема в том, что...

Исправление текста в разных файлах
Здравствуйте, у меня имеется исходная папка содержащая множество различных папок. В каждой из этих попок лежат по несколько текстовых фалов...

работа с экземпляром в разных файлах
Добрый день коллеги! Недавно узнал о существовании Vue. И уже влюблён! Вопрос. Как работать с одним экземпляром класса...

Видимость переменной в разных файлах
Добрый вечер) Помоги пожалуйста разобраться) Нужно чтобы переменная len из файла 2 попала (была определена) в файле 1. Компилятор выдает...

Использование переменной в разных файлах
Файлы: login.php - форма авторизации data.php - код авторизации main.php - главная страничка В файле...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru