2011-11-11 3 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 : 블라드는 응답 –

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;} 
관련 문제