c++ - 指向匿名结构的共享指针

标签 c++ smart-pointers

是否可以为 *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/

相关文章:

c++ - boost 图形库 : deterministic order of iteration of in_edges?

c++ - IOCTL_MOUNTMGR_QUERY_POINTS

c++ - 带超时的 C/C++ recv()

c++ - 构造函数中的引用初始化问题

c++ - 如何更改 *.db 的默认位置?

c++ - g++ 4.2 SSE 指令的内联汇编用对齐的 XMM 寄存器拷贝包装用户汇编代码

c++ - 智能指针,或 "better"析构函数

c++、msxml 和智能指针

c++ - 如何释放共享指针的内存?

c++ - 智能指针是否能够从容器中删除对其对象的其他引用?