1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
1

Несколько файлов в проекте. Как обращаться к глобальным переменным и структурам?

21.09.2019, 13:41. Показов 1464. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
//file1.cpp
#include <iostream>
#include "Header.h"
 
int global = 1;
struct globalstruct {int a; int b;};
globalstruct Mystruct;
viod main()
{
  int a;
}
C++
1
2
3
4
5
6
7
8
//file2.cpp
#include "Header.h"
 
extern int global = 1;
extern globalstruct Mystruct; // ????????? так не работает
 
void func1(){int b;}
void func2(){int c;}
C++
1
2
3
4
//Header.h
#pragma once
void func1();
void func2();
Глобальных переменных достаточно много, можно ли их все записать в заголовочный файл? Тоже самое со структурами.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2019, 13:41
Ответы с готовыми решениями:

Как получить возможность обращатся к глобальным переменным?
именно к переменным, а не к константам. Нашел совет объявить класс на основе Application public...

Теоретический вопрос по глобальным переменным
Здравствуйте. Хотел бы узнать мнение по следующему вопросу: Есть некое приложение, состоящее из...

Обращение из потока к глобальным переменным
Здравствуйте. интересует такой момент есть код private void add() { ...

Проблема с доступом к глобальным переменным
Хочу сделать глобальные переменные, чтобы был доступ из любой функции, но компилятор ругается: ...

9
nd2
3434 / 2813 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
21.09.2019, 14:15 2
Определение переменных в заголовочных файлах
0
1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
21.09.2019, 14:57  [ТС] 3
А что по поводу структуры?
0
Just Do It!
3559 / 1958 / 626
Регистрация: 23.09.2014
Сообщений: 6,318
Записей в блоге: 2
21.09.2019, 17:20 4
Лучший ответ Сообщение было отмечено Rybik001 как решение

Решение

Цитата Сообщение от Rybik001 Посмотреть сообщение
// ????????? так не работает
C++
1
2
3
4
5
6
7
8
#include "Header.h"
 
int global = 1;
globalstruct Mystruct;
int main()
{
  int a;
}
C++
1
2
3
4
5
//file2.cpp
#include "Header.h"
 
void func1(){int b;}
void func2(){int c;}
C++
1
2
3
4
5
6
7
8
9
//Header.h
#include <iostream>
#pragma once
struct globalstruct {int a; int b;};
void func1();
void func2();
 
extern int global;
extern globalstruct Mystruct;
1
1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
21.09.2019, 17:48  [ТС] 5
Цитата Сообщение от XLAT Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
#include "Header.h"
 
int global = 1;
globalstruct Mystruct;
int main()
{
  int a;
}
C++
1
2
3
4
5
//file2.cpp
#include "Header.h"
 
void func1(){int b;}
void func2(){int c;}
C++
1
2
3
4
5
6
7
8
9
//Header.h
#include <iostream>
#pragma once
struct globalstruct {int a; int b;};
void func1();
void func2();
 
extern int global;
extern globalstruct Mystruct;
Все хорошо, только вот не работает для.
C++
1
template<class T>
0
Just Do It!
3559 / 1958 / 626
Регистрация: 23.09.2014
Сообщений: 6,318
Записей в блоге: 2
21.09.2019, 18:06 6
Цитата Сообщение от Rybik001 Посмотреть сообщение
Все хорошо, только вот не работает для.
Разбиение шаблона на разные файлы(хедер+cpp) и не работает!

Вся реализация шаблона должна находиться в хедере.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
//Header.h
#include <iostream>
#pragma once
template<class T>
struct globalstruct {T a; T b;};
void func1();
void func2();
 
extern int global;
extern globalstruct<int> Mystruct;
1
1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
21.09.2019, 18:10  [ТС] 7
Цитата Сообщение от XLAT Посмотреть сообщение
Разбиение шаблона на разные файлы(хедер+cpp) и не работает!

Вся реализация шаблона должна находиться в хедере.

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
//Header.h
#include <iostream>
#pragma once
template<class T>
struct globalstruct {T a; T b;};
void func1();
void func2();
 
extern int global;
extern globalstruct<int> Mystruct;
Так и сделал, но когда пытаюсь вызвать функцию с template из другого файла, то выдает ошибку "ссылка на неразрешенный внешний символ". В функцию я отправляю структуру, может быть в этом проблема.
0
Just Do It!
3559 / 1958 / 626
Регистрация: 23.09.2014
Сообщений: 6,318
Записей в блоге: 2
21.09.2019, 18:23 8
Цитата Сообщение от Rybik001 Посмотреть сообщение
функцию с template
перепешите её всю полностью в ваш хедер-файл вместо объявления void foo();!
и юзайте на здоровье

Добавлено через 10 минут
Цитата Сообщение от Rybik001 Посмотреть сообщение
В функцию я отправляю структуру
структура должна быть определена выше определения шаблона функции.
1
1 / 1 / 0
Регистрация: 10.06.2013
Сообщений: 153
21.09.2019, 18:28  [ТС] 9
Цитата Сообщение от XLAT Посмотреть сообщение
перепешите её всю полностью в ваш хедер-файл!
и юзайте на здоровье
Перетащил, теперь работает. Это нормально что среди прототипов функций идет описание функции?
1
Just Do It!
3559 / 1958 / 626
Регистрация: 23.09.2014
Сообщений: 6,318
Записей в блоге: 2
21.09.2019, 18:29 10
Цитата Сообщение от Rybik001 Посмотреть сообщение
Это нормально что среди прототипов функций идет описание функции?
это шаблонная магия, сэр
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2019, 18:29
Помогаю со студенческими работами здесь

Как правильно обращаться к переменным обьекта?
public class Point { public double x, y; Point lowerLeft = new Point(); Point upperRight =...

Как обращаться к переменным внутри класса из его методов?
Только начинаю осваивать ооп и наткнулся на проблему, ответ на которую не смог найти, гугля...

Как обращаться к форме в другом проекте?
Ситуация такая: Есть Project1 и у него есть Form1. Есть Project2 с Form2. Оба проекта в...

Не получается присвоить значение глобальным переменным Visual 2008
Уважаемые господа, не могу разобраться как присвоить значение глобальной переменной, перечитал темы...


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

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

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