多个类,相同的公共接口
multiple classes, same public interface
本文关键字:接口 更新时间:2023-10-16
好的,经过昨晚,我决定改写我的问题以便于阅读。我有2个班级,军队和战斗组。以下是下面的类,尽管缺少一些部分:
class Battlegroups
{
private: battlegroup battlegroupobject[100];
public:
void AddBattleGroup(); //add a battlegroup object to the array
void removebattlegroup(); //remove a battle group objects from the array
};
class Army
{
private: battlegroups battlegroupsobject;
public:
void formbattlegroup()
{
battlegroupsobject.AddBattleGroup();
}
void disbandbattlegroup()
{
battlegroupsobject.removebattlegroup();
}
};
看,问题出在formbattlegroup()和disbandbattlegroup(),它似乎增加了一个毫无意义的接口。
如果有一种方法可以让我在不执行上述操作的情况下访问 Addbattlegroup 和 removebattlegroup() 方法,请告诉我。
或者,告诉我这是否是你这样做的方式,但对我来说,这似乎是为了代码而添加代码。
如果Battlegroups
仅用于包含对象,则可以在Army
中使用battlegroup battlegroupobject[100]
。或者使用 std::vector<battlegroup>
而不是 battlegroups
.如果不是(无论如何),您的决定似乎非常正确,因为这些对象有不同的职责。
不太
确定你的设计,但这是我的猜测:你想要Army
,Navy
等。然后你可能想继承Army
,Navy
从Battlegroups
,这样你就不需要为每个类写AddBattleGroup
和RemoveBattleGroup
Army
、Navy
等。如下所示:
class Battlegroups
{
// side-note: you may want to replaced below by std::vector<battlegroup>
private: battlegroup battlegroupobject[100];
public:
void AddBattleGroup();
void RemoveBattleGroup();
};
class Army
: public Battlegroups
{
// other specific implementations
};
class Navy
: public Battlegroups
{
// other specific implementations
};
// usage
Army army1;
army1.AddBattleGroup();
Navy navy1;
navy1.AddBattleGroup();
如果这不是你想要的,你可能要考虑德米特里的答案。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如何绑定 C++ gRPC 客户端的网络接口
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- 带有进度表的 curl 多接口程序
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 我可以在具有一个标头和一个接口的 cpp 文件中有多个嵌入吗?
- 类接口,可以创建N个方法
- 类具有相同的接口,但参数的类型不同
- 如何与 Cheerp/js 中的 extern 变量接口?
- 如何使用现代 CMake 安装捆绑的接口依赖项?