我已阅读“现代 C++ 设计”
,我在其示例代码中有一个问题
在 p278 p279 中
,如果您没有 MutilMethods.h 中的 BasicDipatcher::Add 和 BasicDispatcher::Go 这本书,请参考Loki
的源代码
在 p278 页底部到 p279 向上
它有一段示例代码
typedef BasicDispatcher<Shape> Dispatcher;
void HatchRectanglePoly(Shape& lhs, Shape& rhs) {...}
Dispatcher disp;
disp.Add<Rectangle, Poly>(HatchRectanglePoly);
我在函数 Go 中发现,它的参数是 BaseLhs&,BaseRhs&
在这种情况下,应该是Shape&,Shape&
在函数 Add 中,它的参数是 SomeLhs&,SomeLhs&,
在这种情况下,应该是Rectangle&,Poly&
所以密钥无论如何都不匹配,因为它们是不同的
因此不会调用回调(HatchRectanglePoly)
(如果我在相同的代码中添加 disp.Go....),
而是会抛出 std:runtime_error
我对么??
谢谢