をshared_ptrのためにshared_ptrの
struct Params {
std::shared_ptr<void> user_data;
/* ... */
};
私はこのようにそれを使用したい:
int main() {
std::shared_ptr<SpecializedParams> sp(new SpecializedParams(100));
Params params;
/* ... */
params.user_data = std::static_pointer_cast<void>(sp);
/* ... */
std::shared_ptr<SpecializedParams> sp2 =
std::static_pointer_cast<SpecializedParams>(
params.user_data
);
/* ... */
return 0;
}
が、これは有効で安全ですか?
メインブロックのparamsとは何ですか? –
voidポインタを 'delete'することはできないので、あなたのコードはコンパイルすべきではありません。 –
無効なKerrekSB共有ポインタは確かに有効です。詳細については、ここを参照してください:http://stackoverflow.com/questions/5913396/why-do-stdshared-ptrvoid-work –