Sto imparando C++ eseguendo una piccola simulazione di robot e sto avendo problemi con le funzioni membro statiche all'interno delle classi.Funzioni e variabili membro statico C++
ho la mia classe Ambiente definita in questo modo:
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
};
Poi nel costruttore ho inizializzare i robot e gli ostacoli in questo modo:
numOfRobots = 1; // How many robots to draw
numOfObstacles = 1;
robots = new Robot[numOfRobots];
obstacles = new Obstacle[numOfObstacles];
Ecco esempio di funzione statica che utilizza tali variabili :
void Environment::display(void) {
// Draw all robots
for (int i=0; i<numOfRobots; i++) {
robots[i].draw();
}
}
Quando provo a compilare, ottengo messaggi di errore come
error: invalid use of member ‘Environment::robots’ in static member function
Ho provato a fare numOfRobots, numOfObstacles, robot e gli ostacoli statica, ma poi mi sono errori come
error: undefined reference to 'Environment::numOfRobots'
Io apprezzo molto di qualcuno potrebbe spiegare a me quello che sto facendo male. Grazie!
Nella versione statica del codice non si riesce a definire 'Ambiente :: numOfRobots', l'ha solo dichiarato. Aggiungi 'int Environment :: numOfRobots = 1;' a uno dei tuoi file sorgente. Un libro su C++ spiegherà come dichiarare e definire le variabili insieme a molte altre informazioni essenziali. – john
Dato che hai detto che stai imparando C++, potrei suggerire di usare la libreria standard? Specificamente un 'std :: vector' invece di matrici raw. – bitmask