>>189 c++
https://ideone.com/p3li2Y
https://ideone.com/oYzkxh を元に若干の整理を行った

・他の人と同様shared_ptrを削除
 値で持てるところは単に値で持つほうがC++っぽいと思う
 ただ「Entry を値で持つのはいやだなあ」とのことなので部分的に残してる
 Javaの参照型変数をshared_ptrに置き換えようとして困るのは
 size_t File::accept(std::shared_ptr<Visitor> v) { return v->visit(std::make_shared<File>(this)); }
 ここがJavaだと単にvisit(this)で済むからスッキリするんだけど
 しかもこれmake_shared(this)だと多重開放するよね??

>>189 c++
https://ideone.com/2uUpwH
https://ideone.com/p3li2Y を元に若干の整理を行った

・make_shared<File>(this)の多重開放?を修正
 std::enable_shared_from_thisを使ってJavaの参照型変数っぽい使用感を得た。

・struct this_is_private {};
 これは単にコンストラクタを実質的にprivateにするためだけに使ってる
 https://en.cppreference.com/w/cpp/memory/enable_shared_from_this
 https://stackoverflow.com/questions/8147027/how-do-i-call-stdmake-shared-on-a-class-with-only-protected-or-private-const
 このへん参照されたし