Frage

Ich versuche, eine statische Zeigervariable in einer Klasse zu setzen, aber ich bin immer diese Fehler für jede Variable I Satz versuchen.

Fehler C4430: fehlende Typspezifizierer - int angenommen. Hinweis: C ++ nicht default-int

Unterstützung

Fehler C2040: 'XScroll': 'int' unterscheidet sich in Dereferenzierungsebenen von 'float *'

Fehler C2440: 'initialisieren': kann nicht von 'float **' konvertieren 'int'

Hier ist der Code Enemy.h

#include <windows.h>
#include "Player.h"

class Enemy
{
public:
Enemy(float xPos, float yPos);
Enemy(void);
~Enemy(void);

//update the position of the user controlled object.
void updatePosition(float timeFactor);

//loads all the enemy textures
void static loadTextures();

//creates a set number of enemies
void static createEnemies(int numEnemies, Enemy * enemyArray);

GLuint static enemyTex;
static float * xscroll;
static float * yscroll;
static Player * player;

private:
bool checkCollison(float x, float y, int radius);

float XPos;
float YPos;

};

versuchen, Setvariablen

Enemy::xscroll = &xscroll;
Enemy::yscroll = &yscroll;
Enemy::player = &player;
War es hilfreich?

Lösung

Ich glaube, Sie vermischen Initialisierung mit Zuordnung. Alle Klassen statischen Variablen einmal definiert werden, von den globalen Bereich (das heißt, die Definition ist, außerhalb einer Klasse oder einen Funktions kann jedoch in einem Namensraum sein) und kann zu diesem Zeitpunkt initialisiert werden. Diese Definition sieht genauso aus wie die Definition eines globalen Variablen, type identifier = initializer; der Ausnahme, dass die Kennung den Umfang Operator :: enthält.

Andere Tipps

Unter der Annahme, diejenigen, die Definitionen sind, müssen Sie die Art enthalten (das ist der erste Fehler):

float *Enemy::xscroll = ...;
Player *Enemy::player = ...;

Wie für den zweiten Fehler, scheint es, dass xscroll kein float ist, so &xscroll keinen float * ist und daher nicht auf Enemy::xscroll zugeordnet werden kann. Sie müssen sicherstellen, dass die Typen Ihrer Variablen korrekt sind.

Vielleicht Methoden Setter / Getter public static Schreiben Variablen zu ändern, ist bester Weg? Und bewegen XScroll und andere sto privat.

Es ist mehr schöne Lösung, denke ich, und der Code wird einfacher sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top