Domanda

Sto cercando di impostare una variabile puntatore statica in una classe, ma sto ottenendo questi errori per ogni variabile cerco di serie.

Errore C4430: manca indicatore di tipo - int assunto. Nota: C ++ non supporta default-int

error C2040: 'XScroll': 'int' differisce nei livelli di riferimento indiretto da 'float *'

Errore C2440: 'inizializzazione': non può convertire da 'float **' a 'int'

Ecco il codice 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;

};

cercando di variabili set

Enemy::xscroll = &xscroll;
Enemy::yscroll = &yscroll;
Enemy::player = &player;
È stato utile?

Soluzione

credo che tu stia mescolando l'inizializzazione con assegnazione. Tutte le variabili di classe statiche devono essere definiti una volta, dalla portata globale (cioè la definizione è fuori di qualsiasi classe o funzione, può essere in un namespace tuttavia) e può essere inizializzato in quel momento. Questo sembra definizione proprio come la definizione di una variabile globale, type identifier = initializer; tranne che l'identificatore include l'operatore :: campo di applicazione.

Altri suggerimenti

Supponendo che queste sono le definizioni, è necessario includere il tipo (che è il primo errore):

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

Per quanto riguarda il secondo errori, sembra che xscroll non è un float, quindi &xscroll non è un float * e pertanto non può essere assegnato a Enemy::xscroll. È necessario assicurarsi che i tipi di variabili sono corrette.

Forse la scrittura setter / metodi statici getter pubblici di modificare le variabili è il modo migliore? E spostare XScroll e altri STO privato.

E 'la soluzione più bella, penso, e il codice sta per essere più semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top