我想在一個類中設置一個靜態指針變量,但我得到這些錯誤,我嘗試設置每個變量。設置靜態成員指針變量
錯誤C4430:缺少類型說明符 - 假定爲int。注意:C++不支持默認int
錯誤C2040: 'xscroll': '詮釋' 的不同之處,從 '浮動*'
錯誤C2440間接的層次:初始化:不能從轉換「浮動* *」到 '廉政'
下面是代碼 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;
'xscroll'顯然是一個浮點數,這就是錯誤消息中'float *'的來源。錯誤信息中的「int」來自default-int(BTW C++不支持)。它肯定不是來自'&xscroll',它禁止一些真正奇怪的操作符重載,會是某種指針。第二個錯誤完全是由第一個引起的,編譯器無法證明這些類型是兼容的,因爲沒有指定類型。 – 2010-04-13 00:52:09
@BenVoigt - 很好的捕捉。這就是說,第三個錯誤中的float **出現的任何線索? – 2010-04-13 01:00:11
一旦出現語法錯誤,所有投注都將關閉。也許編譯器試圖恢復(分析文件的其餘部分),假設'&xscroll'指的是'Enemy :: xscroll',在這種情況下,你有一個運算符'&'的地址*變量。這就是爲什麼試圖修復底部錯誤(最後一條消息)的原因通常是失敗的。 – 2010-04-13 01:13:23