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

question-closed [C++] Class error, Zmienna globalna

0 głosów
1,381 wizyt
pytanie zadane 25 kwietnia 2021 w C i C++ przez Marak123 Stary wyjadacz (11,190 p.)
zamknięte 27 kwietnia 2021 przez Marak123

Witam smiley

Mam mały problem z kodem, otóż stworzyłem klasę która przyjmuje parametr przy jej inicjacji i ten parametr musi być dostępny globalnie na całą klasę ale tak nie jest więc stworzyłem zmienna w klasie a potem przekazałem parametr do tej zmiennej. Ale wyskakuje błąd.

error: invalid use of member 'ClassName::variable' in static member function
class ClassName{
public:
  Variables variable;  //Jak coś to 'Variables' to struktura którą zrobiłem i działa

  WebSocket(Variables vars){ variable = vars; };

  static void createArray(){
    return variable // <---  tutaj wyskakuje błąd
  }
};

I uprzedzam pytania ze próbowałem deklarować tą zmienną jako 'static' ale w tedy wyskakiwał kompletnie inny błąd

C:\Users\[username]\AppData\Local\Temp\arduino-sketch-9E71EC17CCC282916D3A24306863F836\sketch\project.ino.cpp.o:(.literal._ZN9WebSocketC5E9Variables[ClassName::ClassName(Variables)]+0x4): undefined reference to `ClassName::variable'

Kombinowałem dalej i szukałem w necie ale nic się nie udało mi zdziałać więc dlatego piszę.

Wie ktoś może dlaczego tak się dzieje??

Będę wdzięczny za pomoc. smiley

komentarz zamknięcia: Dzięki wszystkim za jakąkolwiek pomoc

1 odpowiedź

0 głosów
odpowiedź 25 kwietnia 2021 przez tkz Nałogowiec (42,040 p.)
Nie możesz funkcją statyczną zwracać niestatycznych zmiennych. Poza tym błędny konstruktor i metoda createArray.
komentarz 27 kwietnia 2021 przez Marak123 Stary wyjadacz (11,190 p.)
No właśnie wiem tylko że jak kompiluje to arduino ide to wyskakuje ten błąd i tak samo jest jak kompiluje to rozszerzeniem c/c++ w visual studio zaznaczylem opcję kompilatora 20 ale i tak pokazywał się tem błąd tak samo było przy zastosowaniu platformio w visualu
komentarz 27 kwietnia 2021 przez j23 Mędrzec (195,220 p.)

No to zrób klasycznie:

class ClassName {
public:
    static Variables variable;
};

/* w pliku źródłowym */
Variables ClassName::variable = {};

 

komentarz 27 kwietnia 2021 przez Marak123 Stary wyjadacz (11,190 p.)
no właśnie tak zrobiłem

Ale dzięki
komentarz 27 kwietnia 2021 przez j23 Mędrzec (195,220 p.)
I co, to nie działa?
komentarz 27 kwietnia 2021 przez Marak123 Stary wyjadacz (11,190 p.)
No no to działa

Podobne pytania

+1 głos
2 odpowiedzi 639 wizyt
pytanie zadane 5 października 2021 w C i C++ przez Eniggme Nowicjusz (230 p.)
0 głosów
1 odpowiedź 550 wizyt
0 głosów
1 odpowiedź 415 wizyt

93,753 zapytań

142,713 odpowiedzi

323,356 komentarzy

63,348 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...