0
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();
};

我有这样的课。为什么要像 Block *on 这样声明 *on 指针?我们不必先写 int、float 或类似的东西吗?什么目的?

类声明外面的block *getOn()函数是这样的;

Block *Block::getOn()
{
    return on;
}

我需要在这段代码中返回指针。有没有其他方法可以做到这一点?

4

2 回答 2

1

Block * on声明on为指向类型对象的指针Block。当您编写类定义(在本例中为定义class Block)时,您实际上是在发明一种全新的数据类型(在本例中Block),描述它包含的数据类型以及可能的操作。

您的getOn()代码看起来正确。

于 2013-04-09T00:32:52.100 回答
0

如果您不想管理原始指针(就像我一样),请改用智能指针。

前任:

     // 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);
于 2013-04-09T01:12:12.027 回答