繁体   English   中英

共享指向匿名结构的指针

[英]Shared Pointer to Anonymous Structure

是否可以为* anonymous结构创建shared_ptr? *我不太确定下面的结构是否构成匿名结构。 例如;

struct { HWND hwnd; } *tmpArgs;
tmpArgs->hwnd = hwnd;

std::shared_ptr<struct> evtArgs(tmpArgs); // possible? right now its a compile error "'struct': missing tag name"

// usage
evtHandler( evtArgs ); // evtHandler( std::weak_ptr<void> EventArguments );

我有一个非常狭窄/专业的案例,我需要传递一个结构tmpArgs ,它不会在应用程序的任何其他地方使用。 所以我不需要声明一个新的struct类型。

你可以得到你渴望的shared_ptr ......

std::shared_ptr<std::remove_pointer<decltype(tmpArgs)>::type> evtArgs(tmpArgs);

但是你无法以任何有用的方式将它传递出代码的范围。

潜在地,如果您尝试确保仅通过shared_ptrweak_ptr引用该类,这将是有用的,因此您将这些内容放在命名空间范围内。 但这对我来说似乎远离了良好的编码风格。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM