Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > как передавать данные между cpp модулями (не exter


Автор: Umnik7 30.1.2009, 21:09
Как в си++ передать данные (напрмер целую 
переменную) из одного cpp модуля в другой? (в билдере или в вижуал, не важно)

Автор: andrew_121 30.1.2009, 21:32
Umnik7, Не понял вопроса!

Добавлено @ 21:33
Umnik7, Может extern имеется в виду?

Добавлено @ 21:34
Umnik7, Хотя в названии темы - не extern!

Автор: NightmareZ 30.1.2009, 21:40
Вопрос некорректен.

Автор: Alca 31.1.2009, 00:16
А какая задача стоит?

Автор: math64 31.1.2009, 01:47
Можно через static поле или метод класса:
Код

// A.h
class A {
public:
static int a;
static int getA() { return a; }
static void setA(int A) { a = A; }
};
//A.cpp
#include "A.h"
int A::a;
//B.cpp
#include "A.h"

int b = A::a;
b = A::getA();
A::setA(b);

Автор: pan2004 31.1.2009, 12:29
чем автора extern не устраивает smile 
неет, что-то тут нечисто...

Автор: Earnest 2.2.2009, 17:51
Способов всего 2: либо как глобальную переменную, либо как параметр функции.

Автор: xvr 2.2.2009, 18:34
Цитата(Earnest @ 2.2.2009,  17:51)
Способов всего 2: либо как глобальную переменную, либо как параметр функции.

О нет, гораздо больше:
  •  Записать в файл, в другом модуле прочесть
  •  Открыть сокет на 127.0.0.1 в обоих модулях, в одном записать, в другом прочесть
  •  Создать файл в специальном месте, с именем в виде base64 от данных, в другом модуле opendir и пр.
  •  Напечатать на экран пользователю, потом попросить его ввести (из другого модуля)
  •  Отправить почтой (по SMTP), в другом модуле принять (по POP3)
Эх, звездочки закончились  smile 
Пусть афтор озвучит, что ему НА САМОМ ДЕЛЕ надо


Автор: cutwater 2.2.2009, 22:47
Цитата(xvr @  2.2.2009,  18:34 Найти цитируемый пост)
#  Записать в файл, в другом модуле прочесть
#  Открыть сокет на 127.0.0.1 в обоих модулях, в одном записать, в другом прочесть
#  Создать файл в специальном месте, с именем в виде base64 от данных, в другом модуле opendir и пр.
#  Напечатать на экран пользователю, потом попросить его ввести (из другого модуля)
#  Отправить почтой (по SMTP), в другом модуле принять (по POP3)


Сурово...  smile 

Автор: Dem_max 3.2.2009, 05:16
cutwater, 
Никакого оффтопика, 
xvr, предлагает дельные варианты.

Автор: cutwater 3.2.2009, 10:39
Цитата(Dem_max @  3.2.2009,  05:16 Найти цитируемый пост)
cutwater, 
Никакого оффтопика, 
xvr, предлагает дельные варианты. 


В том смысле что мое сообщение не по теме.
Дык дельные - но имхо это жестокий изврат, хоть и работающий.
Пока не понятно что хотел автор, в принципе согласен с xvr

Автор: Earnest 3.2.2009, 10:50
xvr, в любом из твоих способов предполагается как-то передать имя файла, имя электронной почты или использование какой-то проприентарной информацию, что опять сводит задачу к предыдущей, просто переменная становится другой...
Я, конечно, забыла указать как вариант, что данные - это известная константа.
 smile  smile  smile

Добавлено через 54 секунды
Ах, да, второй модуль еще должен знать, каким именно методом ему переменную прочитать. Это тоже данные. smile 

Автор: Dem_max 3.2.2009, 11:19
Сей автор с этим глупым вопросом засветился не только тут.

Автор: xvr 3.2.2009, 11:29
Цитата(Earnest @ 3.2.2009,  10:50)
xvr, в любом из твоих способов предполагается как-то передать имя файла, имя электронной почты или использование какой-то проприентарной информацию, что опять сводит задачу к предыдущей, просто переменная становится другой...

Угу

Цитата

Я, конечно, забыла указать как вариант, что данные - это известная константа.
 smile  smile  smile
 А это и есть данные, которые надо передать при моем способе  smile 

Цитата

Добавлено @ 10:51
Ах, да, второй модуль еще должен знать, каким именно методом ему переменную прочитать. Это тоже данные. smile
 И это тоже константа  smile 

Автор: GoldFinch 3.2.2009, 11:49
для винды
передавать данные можно через 
tls
filemapping
любой кусок памяти с заранее известным адресом, например область заголовка файла
семафоры, ивенты и проч.
генерацию\отлов эксепшена

для длл
экспортировать в одном модуле, импортировать в другом

Автор: Earnest 3.2.2009, 12:36
Цитата(xvr @  3.2.2009,  12:29 Найти цитируемый пост)
А это и есть данные, которые надо передать при моем способе  

Это данные, которые можно передать через устную\письменную речь. smile  

Мне кажется, автор уже отключился...

Автор: Dem_max 3.2.2009, 12:54
автор в даунхаузе уже

Автор: GoldFinch 3.2.2009, 13:05
Цитата(Earnest @  3.2.2009,  10:50 Найти цитируемый пост)
xvr, в любом из твоих способов предполагается как-то передать имя файла, имя электронной почты или использование какой-то проприентарной информацию, что опять сводит задачу к предыдущей, просто переменная становится другой...
Я, конечно, забыла указать как вариант, что данные - это известная константа.
 smile  smile  smile

Добавлено через 54 секунды
Ах, да, второй модуль еще должен знать, каким именно методом ему переменную прочитать. Это тоже данные. smile 

а как интересно имя глобальной переменной между модулями передается? или его чтоли при написании кода знать не надо?

Автор: andrew_121 3.2.2009, 15:26
Странно то, что автор темы не разу не ответил... smile 

Автор: GoldFinch 3.2.2009, 15:49
кого бы это волновало

Автор: andrew_121 3.2.2009, 18:43
Цитата(GoldFinch @ 3.2.2009,  15:49)
кого бы это волновало

Не понял...?

Автор: GoldFinch 3.2.2009, 18:48
я говорю тут 95% посто флуд ради флуда а норм отвечать на поставленный вопрос никто не хочет
"вопрос не корректен", "Способов всего 2", "Отправить почтой (по SMTP)"
не знаешь - не отвечай, хрень-то зачем писать %)

Добавлено через 4 минуты и 35 секунд
+еще 1 способ - отправка сообщений WM_USER, описано в статье "Лептонный стиль программирования"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)