@InstruktorLewitacji: Tak jak teraz nie możesz, bo próbujesz wołać ze statycznej metody, która nie wymaga instancji klasy, do zmiennej, która takowej instancji wymaga. Żeby zadziałało - zaraz wkleję kod.
Generalnie chciałbym w kilku plikach korzystać z tych funkcji bez tworzenia obiektu wg klasy. Dobrze kombinuje, że jak zrobię static dla tablicy chars to będzie ona wspólna dla wszystkich obiektów utworzonych na podstawie klasy?
Hmmm więc dlaczego jak zrobiłem "static char chars [3][20];" i próbuję się odwołać "chars[i][ii] = ' " to dostaję undefined reference to `Screen::chars'
Mirki, dlaczego jeżeli mam 2 pliki:
Screeen.h
#ifndef SCREEN_H
#define SCREEN_H
class Screen {
public:
static int test;
static void InitLCD();
static void Clear();
private:
void SendToLCD();
char chars [3][20];
};
#endif /* SCREEN_H */
Oraz Screen.cpp
#include "Screen.h"
#include
#define I2C_LCD_ADDR 0x27
LiquidCrystal_I2C LCD_Screen(I2C_LCD_ADDR, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
void Screen::InitLCD() {
LCD_Screen.begin(20, 4); // initialize the lcd for 16 chars 2 lines, turn on backlight
}
void Screen::Clear() {
for (int i = 0; i <= 3; i++) {
for (int ii = 0; ii <= 20; ii++) {
Screen::chars[i][ii] = ' '; // tutaj błąd
}
}
}
void Screen::SendToLCD() {
}
Dostaje: /home/lukasz/Pulpit/StAlpha/app/Screen.h:14:22: error: invalid use of member 'Screen::chars' in static member function
W jaki sposób mogę odwołać się do zmiennej prywatnej w statycznej funkcji klasy?
Żeby zadziałało - zaraz wkleję kod.
https://pastebin.com/NY2veqB2
https://pastebin.com/1EqVas2Z
Do nagłówkowego pliku dodałem statyczny pointer do instancji klasy,
jest tworzony jeśli nie istnieje w Clear() [gdzieś potem będziesz musiał
InitLCD()orazClear(), bo w sumie nie bardzo łapię po co Ci one w wersji statycznej.@InstruktorLewitacji: Yup oraz będzie dostępna z poziomu wszystkich funkcji statycznych tej klasy.
Na przykład niczym:
char Screen::chars[3][20];