Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Где объявлять глобальные переменные?

2.7K
18 декабря 2004 года
sys33
55 / / 16.12.2004
Извините за ламерский вопрос, но не мог бы кто-нибудь мне написать где и как объявлять глобальные переменные в билдере. В *.h или *.cpp и желательно конкретно после какой строчки.
3
18 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by sys33
Извините за ламерский вопрос, но не мог бы кто-нибудь мне написать где и как объявлять глобальные переменные в билдере. В *.h или *.cpp и желательно конкретно после какой строчки.



Наиболее правильно - вообще не объявлять глобальные переменные, т.к. использование их - это плохой стиль.

Объявлять, конечно же, надо в *.h, например:
extern int i;
а определять в одном из *.cpp:
int i;

Номер строички значения не имеет. :)
Главное, чтоб к моменту объявления переменной был определен её тип, т.е. подключены соотв. заголовочные файлы, определены классы, структуры и т.п.

2.7K
18 декабря 2004 года
sys33
55 / / 16.12.2004
Цитата:
Originally posted by Green


Наиболее правильно - вообще не объявлять глобальные переменные, т.к. использование их - это плохой стиль.

Объявлять, конечно же, надо в *.h, например:
extern int i;
а определять в одном из *.cpp:
int i;

Номер строички значения не имеет. :)
Главное, чтоб к моменту объявления переменной был определен её тип, т.е. подключены соотв. заголовочные файлы, определены классы, структуры и т.п.


попробовал объявить в *.h, но мне при компиляции выдает ошибку... storage class 'extern' is not allowed here... и как быть...
И как же можно обойтись без глобальных переменный если у меня в одной кнопочке присваитваются этим переменных, а под другой кнопочкой эти переменные с конкретными значениями из первой кнопочки используются.

487
18 декабря 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by sys33

попробовал объявить в *.h, но мне при компиляции выдает ошибку... storage class 'extern' is not allowed here... и как быть...
И как же можно обойтись без глобальных переменный если у меня в одной кнопочке присваитваются этим переменных, а под другой кнопочкой эти переменные с конкретными значениями из первой кнопочки используются.



Пример проекта покажи.

2.7K
18 декабря 2004 года
sys33
55 / / 16.12.2004
Цитата:
Originally posted by ddnh_bc


Пример проекта покажи.


Все пасиб я сам разобрался...

3
19 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by sys33

И как же можно обойтись без глобальных переменный если у меня в одной кнопочке присваитваются этим переменных, а под другой кнопочкой эти переменные с конкретными значениями из первой кнопочки используются.



Как понимаю, ты только начинаешь программировать, поэтому объяснить будет сложно. Посмотри что-нибудь по архитектуре, конкретно документ/вид.

368
19 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Green
Как понимаю, ты только начинаешь программировать, поэтому объяснить будет сложно. Посмотри что-нибудь по архитектуре, конкретно [COLOR=red]документ/вид.[/COLOR]


Green, это CBuilder, а не Visual C. :)

3
19 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by rostyslav

Green, это CBuilder, а не Visual C. :)



Ты явно что-то не понял.
Я говорю об архитектурных решениях, а не о средствах разработки.

368
19 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Green
Ты явно что-то не понял.
Я говорю об архитектурных решениях, а не о средствах разработки.

Ну, если это ты говоришь, то наверно так оно и есть, я явно что-то не понял. Но я еще не встречал в CBuilder-е такое понятие как документ/вид. Например крутое архитектурное решение: множественное наследование. Как быть с ним в CBuilder-e?

3
19 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by rostyslav
Ну, если это ты говоришь, то наверно так оно и есть, я явно что-то не понял. Но я еще не встречал в CBuilder-е такое понятие как документ/вид.


А при чем тут CBuilder?
Отвлекись от средства разработки. В коробке с карандашами тоже нет карандаша цветом "домик у озера, в котором живет Старый лис."

Цитата:
Originally posted by rostyslav
Например крутое архитектурное решение: множественное наследование. Как быть с ним в CBuilder-e?



Множественное наследование относится к реализации, а не к архитектуре, т.к. архитектура в общем не зависит от языка реализации.

Множественное наследование либо поддерживается, либо нет конкретным языком программирования, и никак не зависит от средства разработки (в т.ч и Builder, и VS, и т.д.).

Языком С++ множественное наследование поддерживается. Компилируем пример и убеждаемся в этом:

 
Код:
class A {};
class B {};
class C :A,B {};


P.S. Я что-то не улавливаю связи между "документ/вид" ("МодельДанных/Контроллер/UI"), мултинаследованием и средами разработки...
368
20 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Green
А при чем тут CBuilder?

Программа пишется на Buildere.

Цитата:
Языком С++ множественное наследование поддерживается. Компилируем пример и убеждаемся в этом:
 
Код:
class A {};
class B {};
class C :A,B {};


 
Код:
class A:TPanel {};
class B:TShape {};
class C :A,B {};

[C++ Error] Unit1.cpp(15): E2278 Multiple base classes not supported for VCL classes
Цитата:
P.S. Я что-то не улавливаю связи между "документ/вид" ("МодельДанных/Контроллер/UI"), мултинаследованием и средами разработки...


Был конкр. вопрос. Как опр.гл.переменную. Один из вариантов ответа:
1.Определить в каком-то .h файле, напр.как int global;
2.В каждом .cpp файле, где есть обращение к этой переменной написать extern int global; и подключить .h файл.

Doc/View это из Visual C. При построение проекта AppWizard спрашивает: Document/View architecture support?

Не помню такого понятия в CBuildere. Но думаю столько оно не стоит, чтоб открыть спор. Я только хотел тебе подсказать, что ты на форуме CBuilder, а не Visual C. :)

3
20 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by rostyslav
Программа пишется на Buildere.
 
Код:
class A:TPanel {};
class B:TShape {};
class C :A,B {};

[C++ Error] Unit1.cpp(15): E2278 Multiple base classes not supported for VCL classes


Ключевое слово - VCL.
Какое оно имеет отношение к С++?
Какое оно имеет отношение к OOD?
Ты опять путаешь мягкое с теплым.

Цитата:
Originally posted by rostyslav

Был конкр. вопрос. Как опр.гл.переменную. Один из вариантов ответа:
1.Определить в каком-то .h файле, напр.как int global;
2.В каждом .cpp файле, где есть обращение к этой переменной написать extern int global; и подключить .h файл.


В корне неправильный вариант ответа.
1. Определять надо в единице компиляции (.cpp файле).
2. А объявлять (extern) можно где угодно, хоть в .h, хоть в .cpp
3. Подключать что-то (.h) совсем не обязательно.

Цитата:
Originally posted by rostyslav

Doc/View это из Visual C.


Document/View - это из OOD (объектно-ориентированный дизайн).

Цитата:
Originally posted by rostyslav

Я только хотел тебе подсказать, что ты на форуме CBuilder, а не Visual C. :)


Ты думаешь, что пользователи CBuilder не доросли до OOA&D ?

303
20 декабря 2004 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by sys33

попробовал объявить в *.h, но мне при компиляции выдает ошибку... storage class 'extern' is not allowed here... и как быть...
И как же можно обойтись без глобальных переменный если у меня в одной кнопочке присваитваются этим переменных, а под другой кнопочкой эти переменные с конкретными значениями из первой кнопочки используются.



Ну дык если кнопочки лежат на одной форме, объяви переменную как член класса формы. Если кнопочки на разных формах, объяви переменную в классе одной из форм как public и далее
Form1->MyVariable = Something;

А вообще правильно, что использование глобальных переменных-дурной тон.

368
20 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Green

Ключевое слово - VCL.
Какое оно имеет отношение к С++?
Какое оно имеет отношение к OOD?
Ты опять путаешь мягкое с теплым.

Хорошо, что ты ничего ни чем не путаешь.
Кто задал вопрос, пишет на CBuilder-е используя библ. VCL.

Цитата:

В корне неправильный вариант ответа.
1. Определять надо в единице компиляции (.cpp файле).
2. А объявлять (extern) можно где угодно, хоть в .h, хоть в .cpp
3. Подключать что-то (.h) совсем не обязательно.

В корне неправильный? Типа вообще нерабочий?

Цитата:

Document/View - это из OOD (объектно-ориентированный дизайн).
Ты думаешь, что пользователи CBuilder не доросли до OOA&D ?

Я сам, в отличие от тебя, пользователь CBuilder. И для чего задавать такие глупые вопросы?

487
20 декабря 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by rostyslav
Программа пишется на Buildere.
 
Код:
class A:TPanel {};
class B:TShape {};
class C :A,B {};

[C++ Error] Unit1.cpp(15): E2278 Multiple base classes not supported for VCL classes



Гы, батенька! Так естественно такая халява не прокатит. Ну не хочет Борланд чтобы его любимые VCL классы мультиплаями были. А с обычными - да ради бога. Наследуй от стольки предков, от скольки надо.

P.S. VCL вообще большая помойка....

3
20 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by rostyslav
Хорошо, что ты ничего ни чем не путаешь.
Кто задал вопрос, пишет на CBuilder-е используя библ. VCL.


"CBuilder - оставь надежду на мультинаследование всяк сюда входящий!" :D

Да ради бога, пусть использует VCL.
VCL - по большому счету оконная библиотека и необязательно использовать её там, где она совсем не нужна. Представляешь, если ты пишешь на CBuilder, не обязательно пихать её везде. Если четверг - рыбный день, то компот не обязательно должен быть с рыбой.

Из другой темы ясно, что автор рисует графики. Я предложил ему создать отдельный класс для получения, хранения и обработки данных для последующего построения графика. Это и есть "Документ" или "Модель данных". На кой хрен в ней VCL если этот класс не имеет никакого отношения к GUI?
А раз VCL (точнее производность от VCL) там не нужен, то кто мешает, если это понадобиться, использовать мультинаследование?

Цитата:
Originally posted by rostyslav
В корне неправильный? Типа вообще нерабочий?


Типа да.

246
21 декабря 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Green

Ты явно что-то не понял.
Я говорю об архитектурных решениях, а не о средствах разработки.


А чего-бы человека сразу не отправить на курсы ООА, ООПроектирования и ООПрограммирования? Или в институт? Объявлять глобальные переменные - это Вам не в бочку чихнуть!

3
21 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by GIZMO

А чего-бы человека сразу не отправить на курсы ООА, ООПроектирования и ООПрограммирования? Или в институт? Объявлять глобальные переменные - это Вам не в бочку чихнуть!



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

Далее был вопрос:

Цитата:

И как же можно обойтись без глобальных переменный если у меня в одной кнопочке присваитваются этим переменных, а под другой кнопочкой эти переменные с конкретными значениями из первой кнопочки используются.


И получил ответ.
Я так полагаю не надо было пугать человека понятиями OOA&D, а рассказать про аиста или как код в капусте находят? :D

Вас этот флейм ещё не задолбал?
Я не понимаю, чего вы пытаетесь доказать?
То, что CBuilder на столько уникальный продукт, что общепринятые методы создания ПО в нем не действуют? Ну чтож, удачи!

259
21 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Green


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

Далее был вопрос:

И получил ответ.
Я так полагаю не надо было пугать человека понятиями OOA&D, а рассказать про аиста или как код в капусте находят? :D

Вас этот флейм ещё не задолбал?
Я не понимаю, чего вы пытаетесь доказать?
То, что CBuilder на столько уникальный продукт, что общепринятые методы создания ПО в нем не действуют? Ну чтож, удачи!



Предлагаю перенести эту тему в Гостевую книгу и назвать "Самые бесполезные ответы на простой вопрос".:angel:

3
21 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by AlexandrVSmirno

Предлагаю перенести эту тему в Гостевую книгу и назвать "Самые бесполезные ответы на простой вопрос".:angel:



Уважаемый, если твой профессиональный уровень недостаточен для оценки подобных советов, это ещё не значит, что они бесполезны.
Ребенок не понимает опасности электричества, о которой говорят взрослые, пока не сунет два пальца в розетку.

Да и вопрос не так прост, как кажется на первый взгляд. "Почему птицы летают? - Потому, что крыльями машут."
Вопрос растет из ошибочного подхода к архитектуре ПО, которая свойствена всем новичкам.

Впрочем, переносите тему куда хотите. Мои ответы для тех, кто умеет вникать в суть, учиться, перенимать опыт и повышать свой уровень.

259
21 декабря 2004 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by Green


Уважаемый, если твой профессиональный уровень недостаточен для оценки подобных советов, это ещё не значит, что они бесполезны.
Ребенок не понимает опасности электричества, о которой говорят взрослые, пока не сунет два пальца в розетку.

Да и вопрос не так прост, как кажется на первый взгляд. "Почему птицы летают? - Потому, что крыльями машут."
Вопрос растет из ошибочного подхода к архитектуре ПО, которая свойствена всем новичкам.

Впрочем, переносите тему куда хотите. Мои ответы для тех, кто умеет вникать в суть, учиться, перенимать опыт и повышать свой уровень.


Мой профессиональный уровень оценивается более чем 20 - летним стажем системного программирования, Наличем 20 - сертификатов в.т.ч. от фирмы Microsoft. Собственными разработками ОС и ЛВС. И еще много чем. А вопрос действительно простой. Все остальное полный флуд. И архитектура ПО и ООП здесь ни причем. Просто товарищ еще только учится и разводить такие дискуссии - только сбивать его с толку. Я думаю он уже вообще забил на все это обсуждение и давно разобрался сам.

ЗЫ: Впрочем это все тоже флуд.

3
21 декабря 2004 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by AlexandrVSmirno

Мой профессиональный уровень оценивается более чем 20 - летним стажем системного программирования, Наличем 20 - сертификатов в.т.ч. от фирмы Microsoft. Собственными разработками ОС и ЛВС. И еще много чем.


О! (хотя весьма сомнительно судя по другим постам)
Будем письками меряться?
Я - 13 летний ХаЦкЕр из Усть-Урюпинска, 15 см.

Огромное спасибо за твои бесполезные советы что и как мне говорить.

На сем раскланиваюсь.

368
21 декабря 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by Green
Уважаемый, если твой профессиональный уровень недостаточен для оценки подобных советов, это ещё не значит, что они бесполезны.
...
Мои ответы для тех, кто умеет вникать в суть, учиться, перенимать опыт и повышать свой уровень.

Не психуй. :)
Лучше почитай книгу Уэллин-"Как не надо программировать на C++".

Не коды конечно. Там много смешных прог.историй

P.S. Хоть абсолютно не имеет никакого значения, но способ объяв.гл.переменной в Buildere работает.(теперь проверил).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог