Skocz do zawartości
gielo

Platformio: class, private i public w Arduino

Pomocna odpowiedź

Napisano (edytowany)

Mam taki problem pisząc z wykorzystaniem biblioteki arduino i platformio (pod Atom). Jeśli deklaruję zmienne i prototypy funkcji jako prywatne to przy kompilacji wywala błąd, że próbuję użyć zmiennej, czy funkcji jako prywatna. Działają one tylko jako Public:

Oczywiście deklaracje i wywołania odbywają się w obrębie tej samej klasy, wie ktoś o co może chodzić?

Robię to standardowo w stylu C++ czyli

w pliku nazwa.hpp piszę

class NazwaKlasy {

private:

void nazwaFunkcji(); //prototyp funkcji

};

w pliku nazwa.cpp piszę

void nazwaKlasy::nazwaFunkcji() { //wywołanie funkcji

tutaj ciało funkcji

}

 

Edytowano przez gielo

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Rozumiem, że w pliku nazwa.cpp masz zawarte #include nazwa.hpp? U mnie z VSCode działa...

test.h
 

#include <stdio.h>

class NazwaKlasy {
    private:
        void funkcja();
};

test.cpp

#include <test.h>

void NazwaKlasy::funkcja() {
    printf("test");
}

 

Edytowano przez matimoto87

Udostępnij ten post


Link to post
Share on other sites
Dnia 25.05.2019 o 13:19, gielo napisał:

wywala błąd, że próbuję użyć zmiennej, czy funkcji jako prywatna

a w jaki sposób jej "używasz" w innym miejscu? Czy chodzi tylko o to, że nie możesz jej zadeklarować i zdefiniować? U mnie definiuje się bez problemu.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Jeśli problemem nie jest plik nazwa.cpp i próbujesz użyć tej funkcji np. w Twoim głównym programie to tak - po to ta funkcja jest prywatna, byś nie miał do niej bezpośredniego dostępu. Musisz zrobić inną, publiczną funkcję, która będzie rozmawiać z tą prywatną. 

Edytowano przez matimoto87
  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...