是否可以为 *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_ptr
引用,这可能会很有用。或 weak_ptr
,所以你把这些东西放在命名空间范围内。但对我来说,这似乎与良好的编码风格相去甚远。
关于c++ - 指向匿名结构的共享指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005035/