Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588

Правильно созданный глобальный объект

06.06.2015, 21:16. Показов 5403. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Необходимо создать создать несколько объектов классов глобально.
Я делаю:
Создаю h-файл. в нем объявляю(создаю) объекты.
И в срр - передаю в них все данные.


Теперь в разных других файлах подключаю этот файл в другие, где он нужен.

Ошибки: "Имя Объекта already defined in Там-то".

Как правильно поступить?


Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.06.2015, 21:16
Ответы с готовыми решениями:

Как правильно вернуть объект созданный в функции?
Допустим у нас есть функция, которая динамически создает объект и должна его вернуть. К примеру, возьмем динамическое создание массива. ...

Глобальный объект
Как сделать, чтобы я создал объект, и его видел весь файл? Суть в том, что в конструктор я хочу передать аргумент. Или нужно сделать...

Глобальный объект
Есть у меня приложение с формой Win Forms(CLR) Ну у меня весь код соответственно в .h файле. Как там объявить вектор, что-бы его можно было...

25
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
06.06.2015, 21:21
Цитата Сообщение от _Valera_ Посмотреть сообщение
Как правильно поступить?
В одном .cpp
C++
1
MyType obj ;
В .h или в .cpp, в которых нужен объект obj :
C++
1
extern MyType obj ;
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
06.06.2015, 21:22
Цитата Сообщение от _Valera_ Посмотреть сообщение
Как правильно поступить?
вот так
global.c
C
1
2
3
#include "global.h"
int G1;
int G2;
global.h
C
1
2
extern int G1;
extern int G2;
и уже global.h подключаешь куда нужно
extern -"внешний" говорит компилятору что переменная объявлена где то там, не в его видимости
но если ты не подключишь к проекту global.c то возмутится линкер "переменная нигде не объявлена"
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
06.06.2015, 21:26  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
extern MyType obj ;
Цитата Сообщение от ValeryS Посмотреть сообщение
Код C
1
2
extern int G1;
extrn int G2;
Спасибо.

А есть в чем-то принципиальная разность создания объекта в h-файл и срр-файле?
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
06.06.2015, 21:37
Цитата Сообщение от _Valera_ Посмотреть сообщение
А есть в чем-то принципиальная разность создания объекта в h-файл и срр-файле?
огромная
для начала компилятор компилирует(транслирует) по модулям, модулем для него является С(СРР) файл
а заголовочный файл h это для компилятора ничто,фикция он их и не увидит
перед компиляторм работает препроцессор, который когда видит #include тупо подставляет текст из файла, названого в инклюде, в это место,т.е получается что ты объявляешь в том же С файле только не ручками а при помощи автоматики
можно назвать файл не"global.h" а "global.txt" или еще как, от этого ничего не изменится
но принято называть h от head "голова" "заголовок"
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
07.06.2015, 00:05  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
В одном .cpp
Код C++
1
MyType obj ;
В .h или в .cpp, в которых нужен объект obj :
Код C++
1
extern MyType obj ;

Может быть так, что extern нельзя применить? Просто использую библиотеку, и при создании объекта из нее, таким образом - сразу вылетает программа: "Access violation writing location"

Добавлено через 5 минут
Цитата Сообщение от _Valera_ Посмотреть сообщение
Может быть так, что extern нельзя применить? Просто использую библиотеку, и при создании объекта из нее, таким образом - сразу вылетает программа: "Access violation writing location"
Да , оно и без extern ,неплохо так, вылетает.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
07.06.2015, 00:09
Цитата Сообщение от _Valera_ Посмотреть сообщение
Access violation writing location
Нарушение прав доступа для записи
посмотри объект у тебя существует? адрес его правильный?
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
07.06.2015, 00:28  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
Нарушение прав доступа для записи
посмотри объект у тебя существует? адрес его правильный?
Я уже 2 часа сижу, какой то бред. Создаю объект глобально, и из-за этого вылетает. КАК!!?!
Взял для проверки, создал проект , и да именно этот класс вылетает если его так объявить.
0
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
07.06.2015, 00:40
Цитата Сообщение от _Valera_ Посмотреть сообщение
и да именно этот класс вылетает если его так объявить.
так расскажи что за класс и как ты его объявляешь?
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
07.06.2015, 00:44  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
так расскажи что за класс и как ты его объявляешь?
С SFML знакомы?

Добавлено через 1 минуту
класс Texture
http://www.sfml-dev.org/tutori... sprite.php

Достаточное для вылета условие, такое:
Texture t;
int main()
{
}
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
07.06.2015, 00:46
Цитата Сообщение от ValeryS Посмотреть сообщение
так расскажи что за класс и как ты его объявляешь?
Лучше, покажи.
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
07.06.2015, 00:47
Цитата Сообщение от _Valera_ Посмотреть сообщение
С SFML знакомы?
нет
Цитата Сообщение от _Valera_ Посмотреть сообщение
Достаточное для вылета условие, такое:
Texture t;
могу предположить что объект нельзя создать статически, но утверждать не берусь, поскольку с темой незнаком
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
07.06.2015, 00:49  [ТС]
Цитата Сообщение от ValeryS Посмотреть сообщение
могу предположить что объект нельзя создать статически
Из каких соображения это вытекает?
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
07.06.2015, 00:49
Кода больше давай. Какое-то гадание на кофейной гуще...
1
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
07.06.2015, 00:51
Цитата Сообщение от _Valera_ Посмотреть сообщение
Из каких соображения это вытекает?
из тех что программа падает
накидай тестовый проект и давай сюда
1
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
07.06.2015, 00:51
Цитата Сообщение от _Valera_ Посмотреть сообщение
С SFML знакомы?
угу. Минимальный пример с данной проблемой в студию.
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
07.06.2015, 00:52  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
Кода больше давай. Какое-то гадание на кофейной гуще...
Так код собственно - одна строчка:

Цитата Сообщение от _Valera_ Посмотреть сообщение
Достаточное для вылета условие, такое:
Texture t;
int main()
{
}
Вот и все, что бы там не было написано- вылетает именно из-за глобального объявления.
0
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
07.06.2015, 00:54
Цитата Сообщение от _Valera_ Посмотреть сообщение
Так код собственно - одна строчка:
А где это всё?
Цитата Сообщение от _Valera_ Посмотреть сообщение
Я делаю:
Создаю h-файл. в нем объявляю(создаю) объекты.
И в срр - передаю в них все данные.
Теперь в разных других файлах подключаю этот файл в другие, где он нужен.
Добавлено через 53 секунды
Если хочешь помощи, выложи нормальный код, который можно проверить. SFML какая? Среда какая?
1
 Аватар для _Valera_
495 / 377 / 136
Регистрация: 27.01.2015
Сообщений: 1,588
07.06.2015, 00:55  [ТС]
Цитата Сообщение от lss Посмотреть сообщение
А где это всё?
Сообщение от _Valera_
Я делаю:
Создаю h-файл. в нем объявляю(создаю) объекты.
И в срр - передаю в них все данные.
Теперь в разных других файлах подключаю этот файл в другие, где он нужен.
Это оказалось не причиной.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
07.06.2015, 00:55
Лучший ответ Сообщение было отмечено _Valera_ как решение

Решение

Цитата Сообщение от _Valera_ Посмотреть сообщение
Достаточное для вылета условие, такое:
Texture t;
int main()
{
}
ЧЯДНТ?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.06.2015, 00:55
Помогаю со студенческими работами здесь

Глобальный объект класса
Ребят, написал класс для реализации очереди на основе массива в отдельном юните, теперь мне нужно в другом получить объект класса, который...

Глобальный объект класса
Добрый вечер всем!) Вообщем суть такая: пишу статическую библиотеку, которая состоит из кучи файлов. Есть класс, конструктор которого...

Динамический глобальный объект.
Здравствуйте. Пишу Auto-Clicker . Текущая версия содержит заранее созданный массив объектов класса "TClickBase" в каждом объекте...

Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту?
Это можно : Array a(10); a.set(0,5); Array b(a); А это нельзя : Array a(10); Array b(20); a = b;

Почему глобальный объект, объявленный до main, конструируется в ней?
Всё просто, имеем код: #include <windows.h> #include <stdio.h> using namespace std; class x { public: x () { printf...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru