首页 > 解决方案 > 在 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()
};

谢谢你的帮助!

标签: c++inheritancestatic-methodsderived-class

解决方案


推荐阅读