fog*_*bit 5 c++ com smart-pointers
为什么我不能
if (IUnknownPtr p = anotherComPtr) {} //error C2275: 'IUnknownPtr' : illegal use of this type as an expression
Run Code Online (Sandbox Code Playgroud)
虽然我可以
if (int* a = anotherPointer) {}
Run Code Online (Sandbox Code Playgroud)
IUnknownPtr是通过定义_COM_SMARTPTR_TYPEDEF(IUnknown, __uuidof(IUnknown))(像我使用的任何其他智能指针)
如何在if语句中创建com smartptr 并验证它是否有效?谢谢.
我使用VS 2008
ps这不是关于编码的好方法,而是关于error C2275.
我模糊地记得有关 MSDEV 在 if 语句内声明变量时不遵循 C++ 规范的一些事情(或者它可能是一个 for 循环?)。
它应该在括号末尾被破坏,但事实并非如此。
这可能是一种回溯——您是否尝试过梳理 MSDN 档案?这看起来更像是一种怪癖,而不是故意行为,除非(正如另一位发帖者评论的那样)你误解了正在发生的事情。
您可以发布实际的代码以及周围的功能吗?
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |