|
1
|
| Martin Spasov · 技术社区 · 7 年前 |
|
|
1
5
让我们使用虚拟函数和指向基类的共享指针
你的双循环看起来像:
解决你的问题更一般的方法是双重分派这个小小的概念证明就是展示一个简单的例子。当问题可以在每个伙伴对象中分解为问题的一部分时,这是非常理想的。但事情并不总是那么简单,所以你可以通过搜索找到更复杂的技术 double dispatch 在这里 another demo 它使用重写和重载的组合。我认为这是你试图实现的东西,但通过一个层次的间接解决它。它是 inspired by the visitor pattern :使用指向伙伴对象基类的共享指针调用对象的多态冲突函数。但是这个函数的实现会立即调用伙伴对象的多态函数,并将参数作为对自身的引用(即,了解参数的实际类型,允许编译器选择正确的重载)。不幸的是,这种“反弹”方法(顺便说一句,它是一种反向访问器)要求基类知道其所有潜在的派生类,这远远不够理想。但它允许为每个可能的组合提供不同的行为。 双重分派的另一种方法是使用 dispatch table |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |