class Block
{
Block *on;
char *name;
bool white;
bool clear;
bool onTable;
public:
Block(char *nm);
Block(const Block &ob);
void setName(char *nm);
char *getName() const ;
bool isClear();
void setColor(int colour);
bool isWhite()const;
bool isOnTable();
Block *getOn();
void putOn(Block &block);
void putOnTable();
void takeFromTable();
void makeClear();
void flipColor();
void print();
};我有这样的课程。为什么*on指针的声明像Block *on一样?难道我们不需要先写int,float或者类似的东西吗?目的是什么?
类声明之外的Block *getOn()函数是这样的;
Block *Block::getOn()
{
return on;
}我需要在这段代码中返回指针。有没有其他方法可以做到这一点?
发布于 2013-04-09 08:32:52
Block * on将on声明为指向Block类型的对象的指针。在编写类定义(在本例中定义class Block)时,实际上是在发明一种全新的数据类型(在本例中为Block),描述它包含什么类型的数据以及可以执行哪些操作。
您的getOn()代码看起来是正确的。
发布于 2013-04-09 09:12:12
如果你不想管理原始指针(就像我一样),那么你可以选择智能指针。
例如:
// declare type
typedef std::shared_ptr<Block> BlockPtr;
class Block
{
BlockPtr on; // using smart pointer instead of raw pointer
char *name;
bool white;
bool clear;
bool onTable;
public:
Block(char *nm);
Block(const Block &ob);
void setName(char *nm);
char *getName() const ;
bool isClear();
void setColor(int colour);
bool isWhite()const;
bool isOnTable();
BlockPtr getOn(); // returning smart pointer
void putOn(Block &block);
void putOnTable();
void takeFromTable();
void makeClear();
void flipColor();
void print();
};
// initializing on
on = BlockPtr(new Block);https://stackoverflow.com/questions/15891341
复制相似问题