设置与设置函数参数同名的私有数据成员
Setting private data members with same name as set functions parameters
如何正确设置这些私有成员:
private:
int x1,y1,x2,y2;
,当设置函数如下:
void setPos(int x1, int y1, int x2, int y2)
我不能简单地将x1设置为x1,不幸的是,我被参数和变量名的这种实现所困住了。
这是完整的头文件:
#ifndef SHIP_H
#define SHIP_H
class Ship
{
public:
virtual ~Ship(void) {}
virtual const char *name(void) const = 0;
virtual int size(void) const = 0;
int getX(int i) const;
int getY(int i) const;
void print(void) const;
bool includes(int x, int y);
int level(void) const;
void decreaseLevel(void);
static Ship *makeShip(char ch, int x1, int y1, int x2, int y2);
protected:
void setPos(int x1, int y1, int x2, int y2);
int lev;
private:
bool checkConfig(int x1, int y1, int x2, int y2);
int x1,y1,x2,y2;
};
class AircraftCarrier : public Ship
{
public:
AircraftCarrier(int x1, int y1, int x2, int y2);
virtual const char *name(void) const;
virtual int size(void) const;
};
class BattleShip: public Ship
{
public:
BattleShip(int x1, int y1, int x2, int y2);
virtual const char *name(void) const;
virtual int size(void) const;
};
class Cruiser: public Ship
{
public:
Cruiser(int x1, int y1, int x2, int y2);
virtual const char *name(void) const;
virtual int size(void) const;
};
class Destroyer: public Ship
{
public:
Destroyer(int x1, int y1, int x2, int y2);
virtual const char *name(void) const;
virtual int size(void) const;
};
#endif
使用this
指针:
this->x1 = x1; // etc.
或者用类名限定:
MyClass::x1 = x1; // etc.
另一种方法。修改参数的名称:
void setPos(int xa1, int ya1, int xa2, int ya2)
{
x1 = xa1;
y1 = ya1;
x2 = xa2;
y2 = ya2;
}
有两种方法
void setPos(int x1, int y1, int x2, int y2)
{
this->x1 = x1;
this->y1 = y1;
this->x2 = x2;
this->y2 = y2;
}
void setPos(int x1, int y1, int x2, int y2)
{
Ship::x1 = x1;
Ship::y1 = y1;
Ship::x2 = x2;
Ship::y2 = y2;
}
如果函数是在类之外定义的那么你必须写,例如
void Ship::setPos(int x1, int y1, int x2, int y2)
{
this->x1 = x1;
this->y1 = y1;
this->x2 = x2;
this->y2 = y2;
}
编辑:对于你的代码,那么这些数据成员在相应的构造函数中设置如下方式例如
AircraftCarrier( int x1, int y1, int x2, int y2 )
{
setPos( x1, y1, x2, y2 );
}
也不清楚船名存储在哪里
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 数据成员SFINAE的C++17测试:gcc vs clang
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- 我如何调用我的3个数据成员中每个人的设置方法,然后显示由我的设置方法设置的值
- 虚函数可以设置基类的公共数据成员
- 如何设置和调用多个类的私有数据成员
- 如何从成员函数设置类静态数据成员的值
- C++-填充派生类数据成员,同时设置基类属性值
- 如何设置对象数据成员与这个c++与这个
- 设置和变大 否.的数据成员
- 使用泛型资源库设置数据成员
- 如何在工厂设计模式中设置派生产品类的数据成员
- C++在初始化类时设置数组数据成员的大小
- C++类继承设置"classA"数据成员等于"ClassB"
- 将从std::string派生的类派生的类的数据成员设置为值
- 设置与设置函数参数同名的私有数据成员
- 从派生类对象调用基类函数.派生类构造函数中设置的基类数据成员
- 设置私有数据成员