「Modern C++ Design」を読み
ましたが、そのサンプル コードについて質問があります。
MutilMethods.h に BasicDipatcher::AddおよびBasicDispatcher::Go
という本がない場合は、p278 p279 で、または 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 がスローされます。
私は正しいですか??
ありがとう