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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.86
eugira
0 / 0 / 0
Регистрация: 25.11.2007
Сообщений: 66
#1

Межмодульные связи - C++

21.12.2006, 20:52. Просмотров 2628. Ответов 2
Метки нет (Все метки)

<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT color=#000000><B style="mso-bidi-font-weight: normal <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' Проблема:<SPAN style="mso-spacerun: yes </SPAN>есть 2 модуля (модуля классов) ,связанные </SPAN></B><B style="mso-bidi-font-weight: normal <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US include</SPAN></B><B style="mso-bidi-font-weight: normal <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' (может быть перекрёстным </SPAN></B><B style="mso-bidi-font-weight: normal <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US include</SPAN></B><B style="mso-bidi-font-weight: normal <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' ) . Есть функция модуля 2 вызываемая из модуля 1, меняющая переменную модуля 2<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o></o></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT color=#000000><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' Есть 2 модульное (консольное ) приложение из 2 модулей </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US unit</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' 1 и </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US unit</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' 2<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT color=#000000><B style="mso-bidi-font-weight: normal <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US Unit</SPAN></B><B style="mso-bidi-font-weight: normal <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' 1.</SPAN></B><B style="mso-bidi-font-weight: normal <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US cpp</SPAN></B><B style="mso-bidi-font-weight: normal <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' <o></o></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <B style="mso-bidi-font-weight: normal <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' <FONT color=#000000>-------------------------------<o></o></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT color=#000000><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' #</SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US include</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' "</SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US unit</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' 2.</SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US h</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' "<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US <FONT color=#000000>#include <stdio.h><o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US <FONT color=#000000>#include <conio.h><o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; F IN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US <FONT color=#000000>void test()<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US <FONT color=#000000>{<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US <FONT color=#000000><SPAN style="mso-spacerun: yes </SPAN>i=1;<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US <FONT color=#000000>}<o></o></SPAN></P><DIV style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 1pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid; mso-element: para-border-div; mso-border-bottom-alt: solid windowtext .75pt <P class=MsoNormal style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; MARGIN: 0cm 0cm 0pt; BORDER-LEFT: medium none; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 0cm 0cm 1.0pt 0cm <FONT color=#000000><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' Проблема в том, что хотя переменная </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US I</SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' </SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' « видна» в </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US unit</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' 1 (т.е компилятор не придирается к отсутствию её определения в </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US unit</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' 1) но после вызова функции </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US test</SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' </SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' получается </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US i</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' =0 вместо ожидаемого </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US i</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' =1<o></o></SPAN></P></DIV><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' <FONT color=#000000>1 из решений состоит в замене такого определения переменной в хэдер-файле<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT color=#000000><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' И объяалении её в 1 из модулей, а в другом её же с директивой </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US external</SPAN><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' .<o></o></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt <FONT color=#000000><SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' Но, согласитесь, работать с </SPAN><SPAN lang=EN-US style="FONT-SIZE: 11pt; FONT-FAMILY: 'Microsoft Sans Serif' mso-ansi-language: EN-US exte
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.12.2006, 20:52     Межмодульные связи
Посмотрите здесь:

C++ Задан исходный маршрут, различные пункты посещения, информация о наличии связи между пунктами i и i+1.
Программа для установки связи с модемом C++
Создать приложение для решения связи задачи C++
Учет обрывов связи за сутки C++
о связи классов и наследовании даты C++
C++ Не создаётся .exe в связи с содержимым в строке
Внутренние и внешние связи C++
Разработка программы оценки качества канала связи системы связи оптической Сети
Переслать вектор N процессам, используя различные виды связи между процессами (MPI_Alltoall) C++
C++ Проект, нет связи между файлами
C++ Программа для оператора мобильной связи
Определить какого типа АЦП используются во всех системах связи (с использованием STL) C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bazile
58 / 34 / 19
Регистрация: 15.03.2007
Сообщений: 6,911
21.12.2006, 21:12     Межмодульные связи #2
Правильно будет указать extern int i; в unit2.h и int i; в unit2.cpp.
Если тебя смущает использование external в объектно-ориентированном языке, то следует все писать с использованием классов. Иначе странно получается. Функции вне классов (не-ООП подход) тебя устраивает, а extern нет. Не вижу в этом логики. Одно из достоинств C++ состоит как раз в возможности использования и ООП и "старого" процедурного подхода.
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
22.12.2006, 21:31     Межмодульные связи #3
bazile все сказал, если мыслить понятиями ООП, то надо пользоваться классами, тогда любого рода глобальные переменные должны быть представлены атрибутами класса, а класс по необходимости можно оформить в виде синглетона (Singleton pattern)



Удачи,

Владимир
Yandex
Объявления
22.12.2006, 21:31     Межмодульные связи
Ответ Создать тему
Опции темы

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