|
Страници по тази тема: 1 | 2 | (покажи всички)
Тема
|
Глобални променливи във VC?
|
|
Автор |
гого () |
Публикувано | 26.07.00 09:26 |
|
Сблъсках се с нещо, на пръв поглед елементарно. Как мога така да декларирам някоя променлива, че да е достъпна за четене от повече от един клас?
Значи декларирам я като public, после инклудвам хедъра на класа й в сорса на другия клас и нищо не става. Дава ми я undefined, независимо какво правя. Не ми я признава нито самостоятелно, нито като обект на нейния клас.
В help-a четох за extern променливи, ама там пише за нормално С++, което си има и main функция и работата е ясна - квото е преди main-a е глобално.
Ако някой може да ми каже как става тая работа ще съм му благодарен, че по метода на пробите и грешките съвсем се изнервих.
П.П. Извинявайте, че свалям нивото с такива елементарни въпроси.
| |
Тема
|
Глобални променливи във VC?
[re: гого]
|
|
Автор |
Lubo () |
Публикувано | 26.07.00 09:42 |
|
Ili az nesto ne moga da rzbera ili ti gowrish gluposti. Znachi pak mojesh da si izpolzwash extern kato si syszdadesh globalen obek za celia klas i sled towa da izpolzwash extern. Po dobre e da imash globalen ukazatel kym obekta i sled towa da go inicializirash.
Ako iskash glubalna promenliwa chlen na klas bez da prawish instancia na klasa si ia naprawi static:
class CLASS
{
public:
static SOME_TYPE m_MY_STATIC_MEMEBER;
}
////////////////
sled towa estestweno triabwa da ia inicializirash w CPP falla
SOME_TYPE CLASS::m_MY_STATIC_MEMEBER= VALUE;
Posle inkludawash hidyra i nawsiakde mojesh da ia izpolzwash:
CLASS::m_MY_STATIC_MEMEBER
Towa e!
гого написа:
-------------------------------
Сблъсках се с нещо, на пръв поглед елементарно. Как мога така да декларирам някоя променлива, че да е достъпна за четене от повече от един клас?
Значи декларирам я като public, после инклудвам хедъра на класа й в сорса на другия клас и нищо не става. Дава ми я undefined, независимо какво правя. Не ми я признава нито самостоятелно, нито като обект на нейния клас.
В help-a четох за extern променливи, ама там пише за нормално С++, което си има и main функция и работата е ясна - квото е преди main-a е глобално.
Ако някой може да ми каже как става тая работа ще съм му благодарен, че по метода на пробите и грешките съвсем се изнервих.
П.П. Извинявайте, че свалям нивото с такива елементарни въпроси.
| |
Тема
|
Глобални променливи във VC?
[re: гого]
|
|
Автор |
Lubo () |
Публикувано | 26.07.00 09:43 |
|
Ili az nesto ne moga da rzbera ili ti gowrish gluposti. Znachi pak mojesh da si izpolzwash extern kato si syszdadesh globalen obek za celia klas i sled towa da izpolzwash extern. Po dobre e da imash globalen ukazatel kym obekta i sled towa da go inicializirash.
Ako iskash glubalna promenliwa chlen na klas bez da prawish instancia na klasa si ia naprawi static:
class CLASS
{
public:
static SOME_TYPE m_MY_STATIC_MEMEBER;
}
////////////////
sled towa estestweno triabwa da ia inicializirash w CPP falla
SOME_TYPE CLASS::m_MY_STATIC_MEMEBER= VALUE;
Posle inkludawash hidyra i nawsiakde mojesh da ia izpolzwash:
CLASS::m_MY_STATIC_MEMEBER
Towa e!
| |
|
В едно c++ приложение е недопустимо да има глобални променливи заради идеологията на капсулацията. Има само 1 глобална променлива - theApp. Всички променливи и функции, които трябва да са достъпни навсякъде, трябва да са членове на класа на theApp.
| |
|
Може и да не са
Ако пишеш някаква библиотека от класове, ако искаш глобални променливи по добре да се използват static челен-променливи. Зависи!
Между другото в MFC има страшно много глобални променливи, но не са експортвани. Повечето са даже само в рамките на модулите - файловете.
Успех!
| |
|
Но отново по принцип теб би трябвало слабо те интересува какво има под MFC, ATL и т.н. Все пак е невъзможно да се напише каквото и да е приложение без използване на глобални променливи. Но това се отнася за по-ниските нива, а аз говорих за най-високия слой, който надграждаш.
Успех и на теб.
| |
|
Мерси :)))
| |
|
Mnogo me symnyava kompilatoryt na M$ da e chak tolkova "nenormalen" :-) C++ vse pak si ima nasledstvo ot C, koeto spored men si e negov plyus.
| |
|
Разбира се че може да се използват. Дефинираш си в някой header глобална променлива int X, след коет го include-ваш където искаш. Можеш да си направиш специален .h за тия променливи. Другият номер е да я дефинираш в .cpp и където ти трябва я дефинираш отново като extern. Компилатора ще си я намери.
| |
Тема
|
Вярно, бе!
[re: Lubo]
|
|
Автор |
гого () |
Публикувано | 26.07.00 15:49 |
|
На твоя въпрос:
"Ili az nesto ne moga da rаzbera ili ti gowrish gluposti."
Май по-скоро е второто ;-)
Иначе естествено, че със static ще стане, ама нали някой първо трябва да ме светне по въпроса. С целия си акъл, преди я декларирах, ама не я дефинирах. Сега видях, че съм пропускал да я инициализирам. Кво да правим, учим се. Сега върви като пушка.
Мерси за помощта.
| |
|
Страници по тази тема: 1 | 2 | (покажи всички)
|
|
|