c OOP设计 – 将数据成员传递给其他类 – 这是否合理? [等候接听]

c OOP设计 – 将数据成员传递给其他类 – 这是否合理? [等候接听],第1张

概述我还有一个问题,希望能够总结我的想法. 假设我有以下3个类: 班级球员: class Player {private: int positionX, positionY;public: void move(Board& b) { // player changes its position on the board(move) b.removeCharF 我还有一个问题,希望能够总结我的想法.

假设我有以下3个类:

班级球员:

class Player {private:    int positionX,positionY;public:    voID move(Board& b) {      // player changes its position on the board(move)      b.removeCharFromBoard(positionX,positionY);      positionX++;      positionY++;      // 'P' indicates a Player in the Board....      b.insertCharToBoard(positionX,positionY,'P');    }};

班主任:

class Board {private:    // BOARD_C and BOARD_R are both "#define ..." for some integer number.    char board[BOARD_C][BOARD_R];};

class GameEngine:

class GameEngine {private:     Board* board;public:     voID playTurn(const Player& p) {        p.move(board);     }};

你认为GameBoard的playTurn函数会用参数“board”调用Player的移动功能似乎是合理的吗?
我需要这样做才能在棋盘数据成员中标记玩家已经改变了他的位置.
它是否遵守OOP基本规则?

谢谢你们,
聚合者!

解决方法 是的,在这种情况下它似乎是合理的(在这种情况下,“我的意思是”考虑我可以猜测你的GameEngine和Board类的语义以及它们的关联/聚合关系的性质“):

>而是使用智能指针而不是原始指针来保存GameEngine中的Board对象.在这种情况下,unique_ptr可能就是你想要的,因为所有其他别名似乎只是观察者,并且board对象的生命周期绑定到GameEngine对象的生命周期.但是,如果需要共享所有权,请选择shared_ptr.只是尽量不要使用原始指针,新指针和删除指针,因为它们会导致错误的代码;
>你仍然需要在Board类的接口上提供公共函数来修改板,因为Player将无法访问其私有成员变量(并且板恰好是一个).
>而不是#defines,使用constexpr值作为电路板的尺寸(如果您使用的是C 11).您可能还需要考虑Boost.MultiArray来创建安全的二维C风格数组.

总结

以上是内存溢出为你收集整理的c OOP设计 – 将数据成员传递给其他类 – 这是否合理? [等候接听]全部内容,希望文章能够帮你解决c OOP设计 – 将数据成员传递给其他类 – 这是否合理? [等候接听]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1255853.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存