Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
121 / 109 / 29
Регистрация: 18.12.2010
Сообщений: 378

Разбиение на модули

13.05.2013, 10:09. Показов 992. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу вашей помощи. Пишу цепочку классов, один наследуется у другого. В родительском классе есть статические поля. Мне надо разбить эти классы по модулям.

Есть заголовочный файл A.h. Пусть в нём описан абстрактный класс A (без реализации):
C++
1
2
3
#include <iostream>
class A
{...};
от него наследуется класс B. Я пишу примерно так:
B.h:
C++
1
2
3
#include "A.h"
class B : public A
{ /* заголовки */ }
B.cpp
C++
1
2
#include "B.h"
{ /* реализация класса B*/ }
________________
В файл с функцией main() прописываю #include"A.h"
Так вот, это всё прекрасно компилится до тех пор, пока я не попытаюсь создать объект класса B, например:
C++
1
2
3
4
5
6
main()
{
B object_b;
...
return 0;
}
. Тогда мне компилятор жалуется ""object_b" использует неопределённый класс B". Такое ощущение, будто я что-то не туда подключаю. В чём может быть дело?

Добавлено через 17 часов 4 минуты
Я поигрался с инклудами, оказалось, что если в модуль с main() (называется demo) подключить и A, и B:
C++
1
2
#include "A.h"
#include "B.h"
то все работает, объект создаётся, если выкинуть из класса B статическое поле. Но если обратно вернуть в класс статическое поле, ошибка такая:
Code
1
2
error LNK2005: "protected: static unsigned int B::count" (?count@B@@1IA) уже определен в demo.obj
fatal error LNK1169: обнаружен многократно определенный символ - один или более
Я пишу поле так:
Модуль B.h:
C++
1
2
3
4
5
class B : public A
{protected
static int count;
}
int B :: count;
Теперь нужно как-то исправить статическое поле. Не могли бы вы мне помочь?

Добавлено через 46 минут
Всё выяснил.

Первая проблема возникла потому, что я попросту не подключил файл B.h, поэтому и класс B не был виден.
Вторая ошибка - оказывается и модуль demo.cpp, и модуль B.cpp ссылался на B.h, поэтому int B :: count; дважды переопределялся, отсюда и ошибка. Решение: перенёс определение в модуль demo.cpp, который исполняется один раз

Добавлено через 43 секунды
сам спросил - сам ответил
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.05.2013, 10:09
Ответы с готовыми решениями:

Разбиение программы на модули!
Есть большая программа #include &lt;iostream&gt; #include &lt;vector&gt; using namespace std; class mes // AbstractProductA { public: ...

Разбиение кода на модули
Доброго времени суток! Вот есть такое задание. Алгоритмы вычисления s1 и p2 то я написал, но запутался с модулями, как правильно...

Разбиение программы на модули
Добрый день! Пишу довольно крупную для себя программу. Хочется отделить от неё два отдельных файла, в одном были бы одни процедуры, в...

1
18 / 18 / 1
Регистрация: 22.04.2013
Сообщений: 57
13.05.2013, 18:11
Молодец. Мы гордимся такими людьми!
Так держать!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.05.2013, 18:11
Помогаю со студенческими работами здесь

Разбиение программы на модули
Недавно написал программу, которая на входе получает матрицу, а на выходе - обратная матрица, то есть преобразование. Сначала сделал все в...

Разбиение кода на фунции (модули)
Доброго времени суток. Есть код и его надо разбить на функции (модули).Как это сделать ? Я уже голову сломал об это. Заранее признателен. ...

Разбиение
Здраствуйте. Хотел бы спросить вашего совета есть программа разбивания числа на простые слагаемые к примеру вводим 5 а выдаст ответ: 1 4 /...

Разбиение
Всем доброго времени суток. Условие передам своими словами так как нету конкретного)) Необходимо разбить число на простые числа: скажем...

QR -разбиение
Доброго всем времени суток. У кого есть красиво написанное QR-разложение матриц с помощью преобразования Хаусхолдера? Если не сложно,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru