Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 30.01.2015
Сообщений: 40

Область видимости переменной

15.02.2018, 17:42. Показов 1346. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Объявляю переменную в блоке(цикл, if) функции main. Как объявить таким образом, чтобы область действия покрывала не только блок, но и функцию main. Глобальная не вариант. Создать в main и обратиться в блоке тоже, т.к имя функции зависит от действия, происходящих в блоке. Заранее спасибо)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.02.2018, 17:42
Ответы с готовыми решениями:

Область видимости переменной
Пожалуйста проясните новичку почему следующий код выводит сообщение messagebeer вместо message ? ]:->. Я только осваиваю язык поэтому...

Область видимости переменной
#include <iostream> int main() { int i = 5; for(int i = 0; i < 5; i++) { //здесь } return 0;

Область видимости переменной в классе
допустим у меня есть класс A class A { public : ..... std::vector<g *> list; ...... }; и класс наследник class B :...

26
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
16.02.2018, 08:43
Студворк — интернет-сервис помощи студентам
Croessmah, ну да, ну да
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
16.02.2018, 22:37
Цитата Сообщение от ValeryS Посмотреть сообщение
Croessmah, ну да, ну да
Ну и что? Можно конечно размещением обойтись, раз его всё едино нужно создавать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
struct A{
int a;
A():a(0){}
A(int a_):a(a_){}
void prn_a(){cout<<a<<endl;}
};
 
int main(int argc, char* argv[])
{
int swc_var;
cout<<"1 or non 1 ?? ";
cin>>swc_var;
A a;
 
switch(swc_var){
case 1 : new(&a)A(6); break;
default : ;
}
a.prn_a();
cout<<endl;
system("pause");
return 0;
}
Хуже если бы нужно было не его создавать. То есть, в свиче выяснить условие и сделать так чтобы программа с самого начала не запустилась. (Вычислениями в компайл тайме не пользоваться!).
ps.Можно массив байт на стеке создать размером с A (чтобы лишний раз конструктор не гонять, но тогда деструктор тоже вручную пришлось бы запустить. Если не в main, а в другой функции.)
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
17.02.2018, 07:57
IGPIGP, undefined behavior в чистом виде получаем. На этом можно закончить.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
17.02.2018, 10:11
Цитата Сообщение от Croessmah Посмотреть сообщение
На этом можно закончить.
Узнаю манеру ведения разговора.
Цитата Сообщение от Croessmah Посмотреть сообщение
undefined behavior в чистом виде получаем
Объясните.
0
279 / 156 / 52
Регистрация: 30.06.2011
Сообщений: 1,712
17.02.2018, 10:21
Цитата Сообщение от _stanislav Посмотреть сообщение
за комментируй код пожалуйста.
Зачееееем???

Цитата Сообщение от Croessmah Посмотреть сообщение
ок
Croessmah,
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,038
Записей в блоге: 1
17.02.2018, 10:49
Цитата Сообщение от IGPIGP Посмотреть сообщение
Объясните.
Сначала необходимо, чтобы время жизни a закончилось, т.е.
C++
1
2
a.~A();
new(&a) A(6);//ok
1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
17.02.2018, 10:57
Цитата Сообщение от Croessmah Посмотреть сообщение
в чистом виде
Проблема которые видны сразу, это
-запуск конструктора на памяти объекта без её деинициализации. Деструктор вручную запустить бы нужно, если бы выделялись ресурсы. Но в данном разе не должно быть проблем ведь?
-запуск деструктора одного (первого) объекта на другом (втором) в конце скоупа. Это лечится совместно с первым. Кроме того при отсутствие выделения неавтоматических ресурсов тоже не должно вызвать проблем... Что ещё?

Добавлено через 4 минуты
Цитата Сообщение от Croessmah Посмотреть сообщение
Сначала необходимо, чтобы время жизни a закончилось, т.е.
Чуть-чуть не успел. Не написал сразу как следует. Это верно. Но вариант ведь предложен? Я был бы благодарен если бы вы поправили, но не в тоне: "UB и кончен разговор".
Но в чём UB для данного конкретного примера?
И еще. Время жизни в моей редакции заканчивается на выходе из скоупа. Это потому что плесмент не запускает деструктор (его надо запустить вручную если надо). То есть при выделении ресурсов могло бы быть больно, но не в этом разе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2018, 10:57

Область видимости переменной пользовательского класса
Всем привет! Столкнулся с такой проблемой: Создал клас и в нем класс исключений class A { char* pt; public: class...

Область видимости переменной. 3 цикла. Выводим содержимое массива
int main(прошу меня проверить) { Доброго дня, коллеги! Вот сижу с темой - область видимости переменной, нацарапал такое...

Область видимости в С++
В книге С++ Бархатный путь. ( http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/cppvw/cpp_047.html) сказано, что область действия имен...

Область видимости
Даю фрагмент программы: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;cmath&gt; struct elem //тип элемента двусвязного списка ...

Область видимости
func { int someVariable; { int someVariable; //можно ли как нибудь получить доступ к переменной...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru