c++ - 在 C++ 中,如何在派生类中重用静态成员函数?
问题描述
我有一个class Edge {};
, 带有一个成员函数static Edge* findEdge(Node n1*, Node* n2);
。我也有两个派生类class PhysicalLink : Edge {};
和class LogicalLink : Edge{};
. 对于任何一对节点 n1 和 n2 我希望有可能找到相应的 PhysicalLink 和 LogicalLink 对象,分别基于Edge::findEdge()
返回的内容,或者通过某种智能类型转换,或者通过在任一派生类中编写包装函数,或者或或...做这种事情的最佳(或唯一)方法是什么?
这是一个编译的代码片段,用于进一步说明:
类边缘;// 前向声明 类节点 {}; 类图 { 上市: 静态 std::vector<Edge> getEdges() { 返回边;} 私人的: 静态 std::vector<Edge> 边; }; 类边缘 { 上市: 边缘()=默认; 边(节点* n1,节点* n2):_n1(n1),_n2(n2){} 静态 Edge* findEdge(Node* n1, Node* n2) { return &Graph::getEdges().at(0); } // 占位符定义,实际上是 n1 和 n2 的函数 私人的: 节点* _n1; 节点* _n2; }; 类 PhysicalLink : 边缘 { 静态 PhysicalLink* findPhysicalLink(Node* n1, Node* n2) { return new PhysicalLink; } // 占位符定义,这里我想知道如何使用findEdge() }; 类LogicalLink:边缘 { 静态 LogicalLink* findLogicalLink(Node* n1, Node* n2) { return new LogicalLink; } // 占位符定义,这里我想知道如何使用findEdge() };
谢谢你的帮助!
解决方案
推荐阅读
- android - AOSP 构建。始终横向显示
- android - NavGraph.addAll() 以编程方式添加嵌套导航图不起作用
- swift - 从存储在 Firestore 中的坐标将图钉加载到 mapKIT 上,供所有用户查看
- qemu - 如何在 QEMU Mac 上以访客身份安装windwos 作为主机
- python - 将泊松曲线拟合到数据
- ios - 嵌入在 UIViewController 中的 UIHostingController - 如何从外部更新 @State?
- jquery - ASP.NET MVC Remove Model Required Attribute with jQuery
- python - 在python中抓取展开/折叠表
- python - 如何从 json 响应中输出特定数据?
- c# - 如何使用 ASP.Net Core MVC 返回特定用户的项目列表