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

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

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

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

21.12.2006, 20:52. Просмотров 2649. Ответов 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++):

Внутренние и внешние связи - C++
int externalint=5; const int j=10; int main() { } В книге написано,что переменная externalint имеет внешнюю связь,а...

о связи классов и наследовании даты - C++
#ifndef base_hpp #define base_hpp #include &quot;Data.hpp&quot; #include &lt;iostream&gt; using namespace std; class base ...

Учет обрывов связи за сутки - C++
Люди напишите плиз программу которая буде фиксировать обрывы связи за сутки. Я это вижу так. 1.Пингуем google.com 2.если пинга больше...

Программа для оператора мобильной связи - C++
Разработать программу для оператора мобильной связи, позволяющую для отдельно введенных значений даты и времени последнего исходящего...

Проект, нет связи между файлами - C++
В общем, есть проект, 3 файла: main, файл с дефинициями, файл с прототипами. Проект работает только тогда, когда в main файл инклюдишь файл...

Программа для установки связи с модемом - C++
Никто случайно не писал программы для работы с модемом? А именно, интересует как грамотно написать программку, чтобы установить связь с...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
bazile
58 / 34 / 20
Регистрация: 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)



Удачи,

Владимир
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.12.2006, 21:31
Привет! Вот еще темы с ответами:

Не создаётся .exe в связи с содержимым в строке - C++
Не понимаю в чём может заключаться проблема если в объявляем строку сугубо двумя действительными числами не создаётся .exe файлchar s =...

Создать приложение для решения связи задачи - C++
Цены на два вида товаров выросли на р процентов. Вывести старые и новые цены

Переслать вектор N процессам, используя различные виды связи между процессами (MPI_Alltoall) - C++
Переслать вектор, размерности M, N процессам, используя различные виды связи между процессами. Элементы вектора задаются произвольно....

Определить какого типа АЦП используются во всех системах связи (с использованием STL) - C++
Задание: Написать программу на языке С++. Использовать множества/мультимножества подходящего типа. Для выполнения операций с...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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