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

Глобальные объекты и функции - C++

Восстановить пароль Регистрация
 
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
10.10.2011, 22:28     Глобальные объекты и функции #1
Здравствуйте, не подскажите можно ли иметь глобальные объекты и функции, к которым можно обратиться во всех частях проекта, пусть даже друг от друга не зависимых, типа есть заголовочный файл с классом, этот класс ничего не знает о том где и как он будет использоваться, но из него можно будет вызвать некую глобальную функцию из main
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nikola166
 Аватар для nikola166
8 / 8 / 0
Регистрация: 18.03.2010
Сообщений: 142
10.10.2011, 22:34     Глобальные объекты и функции #2
а зачем вам такой монстр?
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.10.2011, 22:38     Глобальные объекты и функции #3
да, а в чем проблема?
C++
1
2
3
4
// 1.cpp
int f() { return 1; }
int g_var = 10;
std::vector<int> vec;
C++
1
2
3
4
// 1.h
int f();
extern int g_var;
extern std::vector<int> vec;
C++
1
2
3
4
5
//2.cpp
#include "1.h"
...
vec.push_back(g_var = f());
...
Добавлено через 39 секунд
только с инициализацией глобальный объектов часто возникают сложности
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
10.10.2011, 22:45  [ТС]     Глобальные объекты и функции #4
Мне как раз-таки нужно противоположное, нужно что бы можно было в 1 использовать функции/объекты объявленные в 2, при том что 1 как и у вас в примере будет включаться в 2, но не наоборот
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.10.2011, 22:46     Глобальные объекты и функции #5
мне переименовать 1 в 2 и наоборот?
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
10.10.2011, 22:53  [ТС]     Глобальные объекты и функции #6
Нет, вы немножко непоняли
someClass.h
C++
1
2
3
4
5
6
7
class someClass{
void coutIt();
}
void someClass::coutIt()
{
cout << getIt();
}
main.cpp
C++
1
2
3
4
5
6
#include "someClass.h"
extern int getIt() {return 5;}
int main()
{
return 0;
}
То есть мне нужно что бы из класса someClass можно было обратиться к функции getIt() объявленной глобально, но этот код не работает, пишет неверный идентификатор
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.10.2011, 22:57     Глобальные объекты и функции #7
someclass.h
C++
1
2
3
4
5
6
7
8
9
int getIt();
 
class someClass{
void coutIt();
}
void someClass::coutIt()
{
cout << getIt();
}
C++
1
2
3
4
5
6
7
#include "someClass.h"
int getIt() {return 5;}
 
int main()
{
return 0;
}
hijacker7
19 / 19 / 1
Регистрация: 06.10.2011
Сообщений: 53
10.10.2011, 22:58     Глобальные объекты и функции #8
Цитата Сообщение от hepr Посмотреть сообщение
То есть мне нужно что бы из класса someClass можно было обратиться к функции getIt() объявленной глобально, но этот код не работает, пишет неверный идентификатор
Правильно пишет, функция должна быть объявлена в файле somaClass.h, или нужно поключить заголовочный файл, в котором она объявлена
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
10.10.2011, 22:59     Глобальные объекты и функции #9
читайте объявление/определение функций
и да
по-хорошему класс нужно разделить на .cpp и .h
а объявление функции (int getIt(); ) вынести в отдельный хедер, который включить в someClass.cpp
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2011, 23:05     Глобальные объекты и функции
Еще ссылки по теме:

C++ Что такое глобальные и локальные объекты класса?
C++ Глобальные функции, найти ошибки в коде
C++ Локальные, глобальные переменные и функции

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

Или воспользуйтесь поиском по форуму:
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
10.10.2011, 23:05  [ТС]     Глобальные объекты и функции #10
Спасибо за помощь!
Yandex
Объявления
10.10.2011, 23:05     Глобальные объекты и функции
Ответ Создать тему
Опции темы

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