假设我有一个基类Shape,以及一个来自Shape,Triangle的派生类,在Visual Studio的项目X中定义。我还在项目Y中有一个类转换,我希望能够动态调用适当的方法:
void Rotate(Shape& shape);
void Rotate(Triangle& triangle);
我正在尝试使用this之后的访问者模式执行此操作。
在Shape.cpp和Triangle.cpp中,我实现了以下方法:
void rotate(Transformations trans) {
trans.Rotate(this);
}
但是,项目X在项目Y之前编译,而项目Y依赖于项目X,这使我具有循环依赖性。
不幸的是,前向声明Transformations类是不够的,因为必须了解其成员函数。
this thread中提供的答案在这方面没有帮助。