2011-11-11 10 views
2

少し問題があります。敵クラスのメンバーにアクセスできないので、クラスファイルが間違っていると思います。何が間違っているのですか? クラスクラスのクラスのメンバーにアクセスできない

#include "classes.h" 

class Enemy 
{ 
bool alive; 
double posX,posY; 
int enemyNum; 
int animframe; 
public: 
Enemy(int col,int row) 
{ 
    animframe = rand() % 2; 
    posX = col*50; 
    posY = row*50; 
} 

Enemy() 
{ 

} 
void destroy() 
{ 
    alive = 0; 
} 
void setposX(double x) 
{x = posX;} 
void setposY(double y) 
{y = posY;} 
}; 

私のヘッダーのための私のCPP:

class Enemy; 

私のメイン:

#include "classes.h" 
Enemy alien; 
int main() 
{ 
    alien. // this is where intelisense tells me there are no members 
} 
+0

データなしメンバーやあなたにも何の機能のメンバーを意味しないのですか? –

答えて

6

あなたの主なファイルは、あなたがいることである、ヘッダに書いたものが表示されますEnemyはクラスです。通常、ヘッダーファイル内のフィールドとメソッドのシグネチャでクラス全体を宣言し、.cppファイルに実装を提供します。

classes.h

#ifndef _CLASSES_H_ 
#define _CLASSES_H_ 
class Enemy 
{ 
    bool alive; 
    double posX,posY; 
    int enemyNum; 
    int animframe; 
public: 
    Enemy(int col,int row); 
    Enemy(); 
    void destroy(); 
    void setposX(double x); 
    void setposY(double y); 
}; 
#endif 

がclasses.cpp

#include "classes.h" 
//.... 
void Enemy::destroy(){ 
    //.... 
} 
//.... 
+0

私はsetPosX()にもアクセスできません。構造体で試してみました。効果はありません。 –

+0

私の悪い。当初、私はあなたがフィールドを参照していると思っていました。 – Vlad

+0

@coolbartek:Vladは答えを –

3

ヴラドの答えに加えて、メインのあなたのファイルは、敵のクラスについて何も知りませんそれ以外に存在する。

一般に

、は、ヘッダファイルに行くクラス宣言し、別の関数定義行きます。

classes.h:

#ifndef CLASSES_H 
#define CLASSES_H 

class Enemy 
{ 
private: 
    bool alive; 
    double posX,posY; 
    int enemyNum; 
    int animframe; 
public: 
    Enemy(int col,int row); 
    Enemy(); 
    void destroy(); 
    void setposX(double x); 
    void setposY(double y); 
}; 

#endif//CLASSES_H 

注回以上含まれているから、同じファイルを防ぐ「警備員を含める」。

は次のようにファイルを分割することを検討しますヘッダーファイルで使用することをお勧めします。そうしないと、コンパイルエラーが発生します。

classes.cpp:

#include "classes.h" 

Enemy::Enemy(int col,int row) 
{ 
    animframe = rand() % 2; 
    posX = col*50; 
    posY = row*50; 
} 

Enemy::Enemy() 
{ 

} 

void Enemy::destroy() 
{ 
    alive = 0; 
} 

void Enemy::setposX(double x) {x = posX;} 
void Enemy::setposY(double y) {y = posY;} 
関連する問題