如果 C++ 的运算符重载; 类我如何使用默认运算符来代替?

发布于 2024-07-29 04:20:42 字数 289 浏览 4 评论 0原文

_com_ptr_ 有一个重载的运算符&()副作用。 如果我有一个变量:

_com_ptr_t<Interface> variable;

如何在不调用重载运算符并触发副作用的情况下检索其地址(_com_ptr_t* 指针)?

_com_ptr_ has an overloaded operator&() with a side effect. If I have a variable:

_com_ptr_t<Interface> variable;

How could I retrieve its address (_com_ptr_t<Interface>* pointer) without calling the overloaded operator and triggering the side effect?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

面如桃花 2024-08-05 04:20:42

我在 ISO 会议上看到过这个案例,因为它破坏了一些 offsetof() 宏实现 (LWG 273)。 解决方案:&reinterpret_cast(变量)

I've seen this case pop up in an ISO meeting as it broke some offsetof() macro implementations (LWG 273). The solution: &reinterpret_cast<unsigned char&>(variable)

我不在是我 2024-08-05 04:20:42

我定义这个效用函数:

template<typename T>
T *GetRealAddr(T &t)
    { return reinterpret_cast<T*>(&reinterpret_cast<unsigned char &>(t)); }

I define this utility function:

template<typename T>
T *GetRealAddr(T &t)
    { return reinterpret_cast<T*>(&reinterpret_cast<unsigned char &>(t)); }
莫多说 2024-08-05 04:20:42

&variable.GetInterfacePtr();

&variable.GetInterfacePtr();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文