Pregunta

Estoy tratando de establecer una variable puntero estático en una clase, pero estoy recibiendo estos errores para cada variable que intento conjunto.

Error C4430: falta el especificador de tipo - int asumió. Nota: C ++ no soporta por defecto-int

Error C2040: 'XScroll': 'int' difiere en niveles de indirección de 'float *'

Error C2440: 'inicialización': no ??se puede convertir de 'float **' a 'int'

Este es el código 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;

};

tratando de las variables de ajuste

Enemy::xscroll = &xscroll;
Enemy::yscroll = &yscroll;
Enemy::player = &player;
¿Fue útil?

Solución

creo que estás mezclando con asignación de inicialización. Todas las variables estáticas clase tienen que ser definidas una vez, de ámbito global (es decir, la definición es fuera de cualquier clase o función, puede estar en un espacio de nombres sin embargo) y puede ser inicializado en ese momento. Esta definición se parece a la definición de cualquier variable global, type identifier = initializer; excepto que el identificador incluye la :: operador alcance.

Otros consejos

Suponiendo que esas son las definiciones, es necesario incluir el tipo (que es el primer error):

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

En cuanto a los segundos errores, parece que xscroll no es un float, por lo &xscroll no es un float * y por lo tanto no se puede asignar a Enemy::xscroll. Es necesario asegurarse de que los tipos de variables son correctos.

Tal vez escribir métodos estáticos setter / getter públicas para cambiar las variables es la mejor manera? Y mover XScroll y otros sto privada.

Es la solución más bello, creo, y el código va a ser más sencillo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top