구조 #pragma once #include class IVisitor; class BaseClass { public: virtual void accept(IVisitor* visitor) = 0; }; class DerivedClassA : public BaseClass { public: void accept(IVisitor* visitor) override { visitor->visitElementA(this); } void operationA() { std::cout accept(visitor); classB->accept(visitor); system("pause"); return 0; } 객체(DerivedClass)에 대한 알고리즘(accept function)을 객체의 구조로부터 분리하여 방..