我正在尝试继承一个类的私有成员。我不会放任何其他cpp文件或.h文件,因为这应该只涉及BoxClass.h,Bullet.h和Bullet.cpp。在“Bullet :: Bullet_Draw_Collision()”中的bullet.cpp中,程序无法识别“BoxClass.h”中的“ySize”。我继承了“BoxClass”类到“子弹”类。为什么程序不识别这个变量。谢谢!
编辑:为了简化我的问题,为什么我不能继承ySize变量。
BoxClass.h:
#ifndef BOXCLASS_H
#define BOXCLASS_H
class BoxClass {
//prv variables
unsigned short int width, retrieveX;
int height, i, xSize, ySize, rightWall;
float space_Value, height_Count;
bool error;
int width_Var, height_Var, position_Var;
int speed_Var = 1;
unsigned short int horizontalCount = 0, verticleCount = 0;
public:
int Retrieve_X();
void Print_Rectangle_Moving(int x, int y, int horizontalSpaces, int verticleSpaces);
void Print_Solid_Rectangle();
void Rectangle_Movement(int speed);
//function shows area of individual spaces
float Rectangle_Area();
// constructor
BoxClass(int x, int y);
};
#endif
Bullet.h:
#ifndef BULLET_H
#define BULLET_H
class Bullet: private BoxClass{
public:
void Bullet_Draw_Collision();
//constructor
Bullet();
};
#endif
Bullet.cpp:
#include "BoxClass.h"
void Bullet::Bullet_Draw_Collision() {
ySize;
}
Bullet::Bullet() {
};
答案 0 :(得分:2)
您必须设置BoxClass
protected
或public
的成员才能在Bullet
BoxClass.h
class BoxClass
{
protected: // or public, consider var access when designing the class
int ySize;
};
Bullet.h
class Bullet: private BoxClass // or protected or public
{
public:
void Bullet_Draw_Collision();
};
Bullet.cpp
void Bullet::Bullet_Draw_Collision()
{
// do whatever you need with inherited member vars
ySize;
}
Bullet::Bullet()
{
};
答案 1 :(得分:1)
您可以使用以下任一选项。
选项1:
class BoxClass {
protected:
int ySize;
};
选项2:
class BoxClass {
private:
int ySize;
protected:
//properties
void set_ysize(int y);
int get_ysize() const;
};
void Bullet::Bullet_Draw_Collision()
{
set_ysize(10);
}