Skocz do zawartości

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
  • 1 miesiąc później...
(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
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.

(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ę! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...