草庐IT

com_ptr_t

全部标签

c++ - 缺少 shared_ptr 和 weak_ptr 之间的相等性

虽然我明白为什么shared_ptr和unique_ptr没有operator==,但我想知道为什么没有shared_ptr和weak_ptr。特别是因为您可以通过对shared_ptr的引用创建一个weak_ptr。我假设在99%的时间里您都需要lhs.get()==rhs.get()。我现在会继续将其引入我的代码,除非有人能给我一个很好的理由,为什么不应该做这样的事情。 最佳答案 weak_ptr没有get()方法,因为您需要在访问底层指针之前显式锁定weak_ptr。明确这一点是一个深思熟虑的设计决定。如果转换是隐式的,那么很

具有 shared_ptr 成员的 C++ 复制构造函数

来自cplusplus.com:Rarelyyouwillcomeacrossaclassthatdoesnotcontainrawpointersyetthedefaultcopyconstructorisnotsufficient.Anexampleofthisiswhenyouhaveareference-countedobject.boost::shared_ptrisexample.有人可以详细说明一下吗?如果我们有一个包含boost::shared_ptr的类,当该类被复制构造时,不会得到复制构造-因此shared_ptr构造函数不会执行正确的事情并增加引用计数?例如,以下

c++ - 为什么 std::unique_ptr 重置与赋值不同?

我想知道为什么std::unique_ptrp=newMyClass;没有效果,但是std::unique_ptrp;p.reset(newMyClass);很好。我有点理解它们的不同之处,但我想知道为什么选择让它们不同。assignment和reset不一样有什么危险? 最佳答案 首先,std::unique_ptrp=newMyClass;不是赋值,是copyinitialization.它不起作用,因为constructorofstd::unique采用原始指针标记为explicit:explicitunique_ptr(po

windows - 如何抽取 COM 消息?

我想等待WebBrowser控件完成导航。所以我创建了一个事件,然后我想等待它被设置:procedureTContoso.NavigateToEmpty(WebBrowser:IWebBrowser2);beginFEvent.ResetEvent;WebBrowser.Navigate2('about:blank');//EventissignalledintheDocumentCompleteeventSelf.WaitFor;end;然后我在DocumentComplete事件中设置事件:procedureTContoso.DocumentComplete(ASender:TOb

解决unable to access ‘https://github.com/XXX‘: Failed to connect to github.com port 443 after 21093 ms

问题:GitHub拉代码时报错Clonefailedunabletoaccess'https://github.com/majiang666/vue-pdf.git/':Failedtoconnecttogithub.comport443after21093ms:Timedout解决方法有两种,如下方法一:登录GitHub账号后再拉取代码方法二:在GitHub前面加上username:passwords@,例:https://username:passwords@github.com/

git解决ssh: Could not resolve hostname gitlab.xxxx.com

报错:ssh:Couldnotresolvehostnamegitlab.xxxx.com:Nameorservicenotknownfatal:Couldnotreadfromremoterepository.解决如下: a:sudovi/etc/hosts添加如下: b:设置为IP地址gitlab.xxxx.com

windows - COM 与 WMI 的信息提供

如果我想向用户提供一些信息,使用什么方法更好关于我的硬件设备。我应该开发专有的COM库还是应该开发WMI提供程序? 最佳答案 我认为这很简单:WMI是Microsoft提供性能和硬件信息的最佳方式。这应该是您提供所描述信息的方式。Win32_Computer和其他硬件类中有很多先例,它们提供CPU详细信息、内存大小等(不会随软件运行而改变的内容)。我这么说是因为你特别标明了“硬件设备”。不要认为WMI仅用于报告软件类型的内容,例如内存使用情况或进程列表。已经有大量专门用于查询WMI的软件(包括我的一个),因此不乏知道如何执行此操作的

.net - 如何确定给定 COM 库的线程模型?

我有一个应该在我的ASP.NETMVC应用程序中使用的COM库。但是我不确定它的线程单元模型。我怎样才能确定它? 最佳答案 使用此键从注册表中确定组件的CLSID:HKEY_CLASSES_ROOT\{component'sprogid}\CLSID然后使用此注册表项查找ThreadingModelHKEY_CLASSES_ROOT\CLSID\{component'sclsid}\InprocServer32\ThreadingModel 关于.net-如何确定给定COM库的线程模型?

c++ - 使用(和导出)boost::shared_ptr<T> 时出现错误 C2562

各位程序员好,我正在创建一个C++DLL库,我在其中使用了boost(1.55)的shared_ptr。然而,当我使用VisualStudio2013编译项目时,出现了一堆错误C2562:Error1errorC2562:'boost::shared_ptr::operator[]':'void'functionreturningavaluef:\developer\cplus\lib\boost_1_55_0\boost\smart_ptr\shared_ptr.hpp6631MEngineError2errorC2562:'boost::shared_ptr::operator[]

解决git@github.com:Permission denied (publickey). Could not read from remote repository. Please make s

在进行项目clone的时候出现报错git@github.com:Permissiondenied(publickey).Couldnotreadfromremoterepository.Pleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.这个错误通常表示没有正确的权限来访问该Git仓库。为了解决GitHub上的权限问题,需要执行以下步骤:1、生成SSH密钥对打开命令行终端(例如GitBash)并输入以下命令:ssh-keygen-trsa-b4096-C"你的电子邮件地址"2、添加SSH密钥到GitHub帐户将公钥