Funkcje i zmienne statyczne C ++
Uczę się C ++, wykonując małą symulację robota i mam problemy ze statycznymi funkcjami składowymi wewnątrz klas.
Mam zdefiniowaną klasę Environment:
class Environment {
private:
int numOfRobots;
int numOfObstacles;
static void display(); // Displays all initialized objects on the screen
public:
Robot *robots;
Obstacle *obstacles;
// constructor
Environment();
static void processKeySpecialUp(int, int, int); // Processes the keyboard events
};
Następnie w konstruktorze inicjalizuję roboty i przeszkody w ten sposób:
numOfRobots = 1; // How many robots to draw
numOfObstacles = 1;
robots = new Robot[numOfRobots];
obstacles = new Obstacle[numOfObstacles];
Oto przykład funkcji statycznej, która używa tych zmiennych:
void Environment::display(void) {
// Draw all robots
for (int i=0; i<numOfRobots; i++) {
robots[i].draw();
}
}
Kiedy próbuję się skompilować, otrzymuję komunikaty o błędach, takie jak
error: invalid use of member ‘Environment::robots’ in static member function
Próbowałem zrobić numOfRobots, numOfObstacles, roboty i przeszkodystatyczny, ale wtedy miałem błędy takie jak
error: undefined reference to 'Environment::numOfRobots'
Byłbym bardzo wdzięczny za to, że ktoś mógłby mi wyjaśnić, co robię źle. Dziękuję Ci!