質問

私はクラスの静的ポインタ変数を設定しようとしているが、私は私が設定しようと変数ごとにこれらのエラーを取得しています。

エラーC4430:欠落している型指定 - intが想定さ。注:C ++をサポートしていませんデフォルト-INT

エラーC2040: 'xscroll': 'int型異なり間接のレベルでから 'フロート*'

エラーC2440: '初期化':から変換できません 'フロート**' から 'int型'

ここでは、コードです 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;

};

セット変数にしよう
Enemy::xscroll = &xscroll;
Enemy::yscroll = &yscroll;
Enemy::player = &player;
役に立ちましたか?

解決

私はあなたが割り当てと初期化を混合していると思います。すべてのクラスの静的変数はグローバルスコープから、一度定義されなければならない(定義は外部の任意のクラスまたは関数であり、すなわち、しかし、名前空間にあることができる)、その時点で初期化することができます。ただ識別子はスコープ演算子type identifier = initializer;が含まれていることを除き、すべてのグローバル変数の定義、::のようなこの定義のルックスます。

他のヒント

それらが定義されていると仮定すると、あなたは(最初のエラーです)タイプを含める必要があります:

float *Enemy::xscroll = ...;
Player *Enemy::player = ...;
xscrollfloatなく、したがって&xscrollに割り当てることができないので、

は第二のエラーについては、そのfloat *Enemy::xscrollない現れます。あなたは必ず、あなたの変数の型が正しいか確認する必要があります。

たぶん、変数を変更するにはセッター/ゲッターのpublic staticメソッドを書くことは最善の方法は何ですか?そして、移動xscrollなどSTOプライベートます。

それは私が考える、より美しい解決策だし、コードをよりシンプルになるだろうされます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top