Visitor

Visitorパターンは、訪問側(visitor)を受け入れ側(acceptor)が受け入れ(accept)、その結果訪問側の処理を受け入れ側の中で実行するような構造。

13.Visitor パターン | TECHSCORE(テックスコア)

main.cppで、

visitor側に走査する処理があるが、それをやるにはcontainerがacceptしないといけない。

$ vi main.cpp 
$ g++ -o main main.cpp content.cpp container.cpp container_visitor.cpp
$ ./main 
<subsubcontent> added!
<subsubcontainer> added!
<subcontent> added!
<subcontainer> added!
container_visitor(container): <container>
container_visitor(content): <subcontent>
container_visitor(container): <subcontainer>
container_visitor(content): <subsubcontent>
container_visitor(container): <subsubcontainer>
<subcontent> content removed!
<subsubcontent> content removed!
<subsubcontainer> container removed!
<subcontainer> container removed!
<container> container removed!
$

container_visitor側の処理が行われている。

Sample/designpattern/visitor/visitor/src/visitor at master · bg1bgst333/Sample · GitHub