Question

Je suis en train de définir une variable de pointeur statique dans une classe, mais j'obtenir ces erreurs pour chaque variable que j'essaie de jeu.

Erreur C4430: manque spécificateur de type - int supposé. Note: C ++ ne prend pas en charge par défaut-int

erreur C2040: 'XScroll': 'int' diffère dans les niveaux de indirection de 'float *'

erreur C2440: 'initialisation': ne peut pas convertir 'float **' à 'int'

Voici le 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;

};

essayer de variables ensemble

Enemy::xscroll = &xscroll;
Enemy::yscroll = &yscroll;
Enemy::player = &player;
Était-ce utile?

La solution

Je pense que vous mélanger l'initialisation avec affectation. Toutes les variables statiques de classe doivent être définis une fois, de portée globale (à savoir la définition est en dehors de toute classe ou fonction, peut être dans un espace de noms cependant) et peut être initialisé à ce moment-là. Cette définition ressemble à la définition d'une variable globale, type identifier = initializer; sauf que l'identifiant comprend l'opérateur de portée ::.

Autres conseils

En supposant que ce sont les définitions, vous devez inclure le type (qui est la première erreur):

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

En ce qui concerne la deuxième erreur, il semble que xscroll n'est pas un float, donc &xscroll est pas un float * et ne peut donc pas être affecté à Enemy::xscroll. Vous devez vous assurer que les types de vos variables sont correctes.

Peut-être écrire méthodes statiques setter / getter publics pour modifier les variables est la meilleure façon? Et déplacer XScroll et d'autres de privé.

Il est solution plus beatiful, je pense, et le code va être plus simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top