我有一个复杂的代码,有几个层次的(多重)继承。该算法直接在创建依赖关系网的代码中实现(无文档)。基本概念如下:
class Base;
class Interface;
class A : public Base, public Interface {
std::vector<child*> children;
A() {
auto pbox = new child("Box")
children.push_back(pbox);
auto psquare = new child("Square")
children.push_back(psquare);
auto pcircle = new child("Circle");
children.push_back(pcircle);
global::edge(this, pbox);
global::edge(this, psquare);
global::edge(this, pcircle);
}
virtual void add_child( child * pchild ) {
children.push_back(pchild);
global::edge(this, pchild);
}
我想通过插入静态函数来发现依赖关系网
global::edge
绘制它们的地图。
但是:
this
将根据演员阵容进行不同的解决:
-
dynamic_cast<A*>(this)
-
dynamic_cast<Base*>(this)
-
dynamic_cast<Interface*>(this)
这三个都有不同的值。在c++中有没有一种方法可以将指针投射到其最“基本”的形式?即返回的值
new
?