• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zmienne z main w innych bibliotekach własnych

Object Storage Arubacloud
–1 głos
377 wizyt
pytanie zadane 27 lipca 2017 w C i C++ przez kvbq Obywatel (1,490 p.)
Próbuje użyć zmiennej we własnej bibliotece, którą (bibliotekę) podpiąłem pod program. Zmienną zdefiniowałem jako globalną w main, bo tam też jej potrzebuje, więc powinna chyba działać w całym programie. Jednak wyskakuje błąd mówiący o tym, że tej zmiennej nie ma w tym zakresie (error: 'pyt' was not declared in this scope).
komentarz 27 lipca 2017 przez draghan VIP (106,230 p.)

Zmienną zdefiniowałem jako globalną w main

To globalną czy w main?

Pokaż kod.

komentarz 27 lipca 2017 przez WireNess Stary wyjadacz (11,240 p.)

Nie jestem pewien, ale wydaje mi się, że autorowi chodziło o to, że zadeklarował zmienną globalną poza funkcją main, ale w pliku main.cpp

PS: Chociaż nie zmienia to faktu, że autor mógł bardziej precyzyjnie pytać :D

 

1 odpowiedź

+2 głosów
odpowiedź 27 lipca 2017 przez niezalogowany
wybrane 28 lipca 2017 przez kvbq
 
Najlepsza

W pliku gdzie chcesz użyć globalnej zmiennej dodaj deklarację z klauzurą extern:

// Plik main.cpp:
int x = 1;
// Inny plik:
extern int x;
komentarz 27 lipca 2017 przez WireNess Stary wyjadacz (11,240 p.)
To samo miałem napisać ;D
komentarz 27 lipca 2017 przez Munvik Dyskutant (9,350 p.)
Przecież zmienną globalną można używać wszędzie. Czy w libach linkowanych jej nie będzie widać ?
komentarz 27 lipca 2017 przez WireNess Stary wyjadacz (11,240 p.)
Tak jak napisał @Hipcio Aby było widać zmienną globalną w plikach linkowanych, do tych iż plików przed zmienną globalną dodajesz słowo: 'extern'
komentarz 27 lipca 2017 przez draghan VIP (106,230 p.)

Przecież zmienną globalną można używać wszędzie.

Nie każdą. ;)

komentarz 28 lipca 2017 przez kvbq Obywatel (1,490 p.)
Chyba extern potrzebuje czegoś jeszcze. Wyświetla się błąd error: expected primary-expression before 'extern' i jeszcze, error: expected ')' before 'extern' ale dałem nawias w paru miejscach i nic to nie zmienia najwyżej są inne błędy. Czy problem może być spowodowany tym, że jest to zmienna w klasie (extern pyt[i].poprawna_odp)? Jeszce spróbowałem dać class pomiędzy extern a pyt, ale też nie działa.
komentarz 28 lipca 2017 przez draghan VIP (106,230 p.)
Jeśli nie podasz swojego kodu, nikt Ci nie powie gdzie masz błąd.
komentarz 28 lipca 2017 przez kvbq Obywatel (1,490 p.)
komentarz 28 lipca 2017 przez WireNess Stary wyjadacz (11,240 p.)

Nie! Nie! Nie! I jeazcze raz nie!

 

Słowa extern nie używasz w klasie!

Dam Ci przykład jak używać extern:

Np. W pliku main.cpp tworzysz zmienną globalną int liczba;

#include "klasa.h"

int liczba;    //zmienna globalna

int main()
{
    liczba = 2;
    std::cout << liczba << std::endl;    //pokazanie na ekranie zmiennej 'liczba'
}

A w pliku gdzie masz klase także robisz zmienną globalną ze słowem extern:

#ifndef KLASA_H_
#define KLASA_H_

#include <iostream>

extern int liczba;    //zmienna globalna dostępna w plikach main.cpp, klasa.h oraz klasa.cpp

class Klasa
{
public:
    void pokazLiczbe(int) const;
};

#endif //KLASA_H_

Jeżeli w pliku *.h dodałeś tą zmienną ze słowem extern i dołączysz ten plik do pliku z definicjami metod klasy, to tam już nie musisz tworzyć tej zmiennej:

//klasa.cpp

void Klasa::pokazLiczbe(int l) const
{
    std::cout << l << std::endl;
}

 

Jeżeli czegoś nie rozumiesz - pisz ;)

Podobne pytania

0 głosów
2 odpowiedzi 185 wizyt
0 głosów
1 odpowiedź 1,220 wizyt
pytanie zadane 16 czerwca 2017 w C i C++ przez excavelty Bywalec (2,480 p.)
0 głosów
2 odpowiedzi 248 wizyt
pytanie zadane 23 marca 2017 w C i C++ przez Konrad Nabożny Stary wyjadacz (13,460 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...