> もちろん~String()で参照カウンターを参照し、StringDataの削除を行なえばいいのですが、
> カウンターの管理はObjectにまかせたいのです。

設計がクソな気がしてきた。
String::~String() で削除できないような StringData って一体何なの?