Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
4 / 4 / 5
Регистрация: 04.11.2012
Сообщений: 60
1

Доступ к структуре из разных .cpp

03.04.2015, 19:05. Показов 1438. Ответов 10
Метки нет (Все метки)

Здравствуйте.
Имеется три файла.

В .h объявлена структура

C++
1
2
3
4
5
6
struct StructName
{
   int int1;
   int int2;
   int int3;
};
Как сделать так, чтобы в первом .cpp можно было изменить один из int, а во втором .cpp получить это значение?

Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2015, 19:05
Ответы с готовыми решениями:

Доступ к структуре из дочернего класса
В такой форме не получается, в чём проблема? Добавлено через 31 минуту файл strucrures.h ...

Доступ к private структуре класса
class MyClass { private: struct TMass{ char str2; int x; TMass *next; ...

Связка двух функций в разных .cpp файлах
Извиняюсь если тема поднималась, может я плохо искал но не нашел вразумительного объяснения...

Можно ли в VS запускать сразу несколько разных файлов .cpp
Возник такой вопрос, если у меня есть два файла .cpp, могу ли я как нибудь запускать их независимо...

10
2546 / 1205 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.04.2015, 19:15 2
1) сделать поля статическими и обращаться к ним с разных файлов, где подключен его .h как
C++
1
StructName::int1 = 15;
(да простит меня люд честной за инкапсуляцию)

2) передавать указатель или ссылку на объект в методы или классы
1
lss
937 / 865 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
03.04.2015, 19:29 3
Цитата Сообщение от Prosto_Toxa Посмотреть сообщение
В .h объявлена структура
А объект где создан, в котором нужно:
Цитата Сообщение от Prosto_Toxa Посмотреть сообщение
изменить один из int
?
0
4 / 4 / 5
Регистрация: 04.11.2012
Сообщений: 60
03.04.2015, 19:34  [ТС] 4
В одном из .cpp
0
Evg
Эксперт CАвтор FAQ
21228 / 8241 / 636
Регистрация: 30.03.2009
Сообщений: 22,596
Записей в блоге: 30
03.04.2015, 19:51 5
Лучший ответ Сообщение было отмечено Prosto_Toxa как решение

Решение

В одном из .cpp создаёшь объект "StructName obj;", а в .h файл помещаешь его описание "extern StructName obj;". В итоге во всех файлах .cpp можешь обращаться к "obj.int1"
1
lss
937 / 865 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
03.04.2015, 20:21 6
Цитата Сообщение от Prosto_Toxa Посмотреть сообщение
В одном из .cpp
В какой области?
0
Evg
Эксперт CАвтор FAQ
21228 / 8241 / 636
Регистрация: 30.03.2009
Сообщений: 22,596
Записей в блоге: 30
03.04.2015, 20:23 7
Цитата Сообщение от lss Посмотреть сообщение
В какой области?
В виде глобальной переменной
1
4 / 4 / 5
Регистрация: 04.11.2012
Сообщений: 60
03.04.2015, 20:29  [ТС] 8
Не хватает мне мозгов.

Если объявить в одном из .cpp "StructName name", то ошибка линковки.
Если сразу в двух, то всё как и раньше. Создаются две разных структуры.

Или я что-то не так делаю?

head.h:

C++
1
2
3
4
5
6
7
8
9
10
void f ();
 
struct StructName
{
   int int1;
   int int2;
   int int3;
};
 
extern StructName obj;
1.cpp:

C++
1
2
3
4
5
6
7
#include "head.h"
 
void f ()
{
    StructName obj;
    obj.int1 = 0;
}
2.cpp:

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include "head.h"
using namespace std;
 
int main()
{
    f();
    cout<<obj.int1;
    return 0;
}
0
lss
937 / 865 / 356
Регистрация: 10.10.2012
Сообщений: 2,706
03.04.2015, 20:33 9
Цитата Сообщение от Evg Посмотреть сообщение
В виде глобальной переменной
Уверен, что у ТС так?

Добавлено через 2 минуты
Prosto_Toxa, почитай про область видимости.
0
Evg
Эксперт CАвтор FAQ
21228 / 8241 / 636
Регистрация: 30.03.2009
Сообщений: 22,596
Записей в блоге: 30
03.04.2015, 20:35 10
Цитата Сообщение от Prosto_Toxa Посмотреть сообщение
Не хватает мне мозгов
Нужно глобальную переменную

1.cpp:

C++
#include "head.h"
 
StructName obj;
 
void f ()
{
    obj.int1 = 0;
}
1
4 / 4 / 5
Регистрация: 04.11.2012
Сообщений: 60
03.04.2015, 20:35  [ТС] 11
Ребята, спасибо огромное, всё получилось!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2015, 20:35

структура в структуре: есть ли доступ к объектам вложенной структуры из объекта первой?
Доброго времени суток! Есть структура в структуре: struct Time struct Time

Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp
main.cpp #include &lt;iostream&gt; #include&quot;Header.h&quot; using namespace std; int main() { A ob;...

Доступ к перечислению в структуре
Приветствую всех. Создаю структуру примерно такого содержания: struct MyStruct { enum {One = 1,...

Доступ к классу из .cpp в .h
Привет, подскажите как правильно организовать связь или доступ к классу, описанному в .h файле. ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru