我有一個結構:鑄造的shared_ptr <T>到shared_ptr <void>
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;
}
這是有效和安全的?
什麼是主要區塊的參數? – 2012-07-24 04:40:38
你不能'刪除'一個空指針,所以你的代碼甚至不應該編譯。 – 2012-07-24 05:52:14
@KerrekSB共享void指針無疑是有效的。在這裏看到更多的細節:http://stackoverflow.com/questions/5913396/why-do-stdshared-ptrvoid-work – 2012-07-24 06:26:15