我有一点问题,我可能错误地包含了类文件,因为我无法访问敌人类的成员。我究竟做错了什么? 我的班级
#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;}
};
我的课程标题:
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(){
//....
}
//....
答案 1 :(得分:3)
除了弗拉德的回答之外,你的文件与main对Enemy类没有任何了解,除了它存在。
一般情况下,声明类位于标题文件中,函数定义放入另一个。
考虑拆分文件,如:
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;}