Multiple dispatch solution with full maintainability
问题 Can someone think of a good way to implement multiple dispatch with something like the Object::foo overloads below? class A { public: virtual void accept (Visitor&) = 0; }; class B : public A { virtual void accept (Visitor&) override; }; class C : public A { virtual void accept (Visitor&) override; }; class D : public A { virtual void accept (Visitor&) override; }; class Object { public: virtual double foo (A*, A*) { std::cout << "Object::foo A,A\n"; return 3.14; } virtual double foo (B*, B*)