草庐IT

com_ptr_t

全部标签

c++ - 不完整类型的 std::unique_ptr 无法编译

我将pimpl-idiom与std::unique_ptr结合使用:classwindow{window(constrectangle&rect);private:classwindow_impl;//definedelsewherestd::unique_ptrimpl_;//won'tcompile};但是,我在的第304行收到关于使用不完整类型的编译错误:Invalidapplicationof'sizeof'toanincompletetype'uixx::window::window_impl'据我所知,std::unique_ptr应该能够与不完整的类型一起使用。这是lib

c++ - GCC 中优先队列的奇怪 shared_ptr 比较器选择

我有一个包含在std::shared_ptr中的类,我想在std::priority_queue的帮助下选择前k个对象.所以,我定义operator并期待一切都会好起来的。但事实并非如此。默认情况下(使用gcc)std::priority_queue使用默认比较器std::shared_ptr,比较地址。但是如果我对std::vector使用std::sort而没有指定比较器我的operator行为是不同的将会被使用。这有点出乎意料且不一致。代码示例:structdocument{floatrank;document(floatrank):rank(rank){}};usingdoc_

c++ - 使用shared_ptr实现RCU(读取-复制-更新)?

我对用户空间RCU(读取-复制-更新)非常感兴趣,并尝试通过tr1::shared_ptr模拟一个,这是代码,虽然我真的是并发编程的新手,但会有高手帮我review吗?基本思路是,reader调用get_reading_copy()以获得当前protected数据的指针(假设它是第一代,或G1)。writer调用get_updating_copy()以获得G1的拷贝(假设它是G2),并且只允许一个writer进入临界区。更新完成后,writer调用update()进行交换,使m_data_ptr指向G2数据。正在进行的读者和作者现在持有G1的shared_ptr(s),并且读者或作者最

C++11 检查成员的 COM 智能指针

我有一堆类似集合的COM接口(interface),我正在尝试为其编写类似STL的迭代器。我已经让迭代器正常工作并专门化了begin()和end()来返回我的迭代器。一切都很完美!除了,当我尝试使用begin(std::vector)时,它使用的是我对begin()的非常一般的特化。由于这些COM对象不是从基础集合对象扩展的,所以我首先尝试:templateCollectionIteratorbegin(CollTypecoll)我明白为什么重载解析没有为std::vector选择正确的begin(),但我不确定如何解决这个问题。不幸的是,我没有一个基集合类来专门针对coll参数。我假

c# - 客户端获取从 C++ COM dll 返回的字节数组

我在C++COM头文件和IDL文件中有这个声明://Headerfile:#defineMAX_LENGTH320typedefBYTEPRE_KEY[MAX_LENGTH];//IDLfile:#defineMAX_COUNT10HRESULTSave([in]DWORDdwCommand,[in]floatfdata[MAX_COUNT],[out]PRE_KEY*phKey);这是C#客户端代码://AfterC#interopcompilation,themethod'ssignatureinC#becomes:Save(uintdwCommand,float[]fdata,o

c++ - 为什么 boost::interprocess::managed_shared_ptr to non-const 不能转换为 managed_shared_ptr to const

据我了解,以下内容对boost::shared_ptr有效:boost::shared_ptrptr;...boost::shared_ptrc_ptr=ptr;//Valid相同的行为不适用于boost::interprocess::managed_shared_ptr。为什么? 最佳答案 boost::interprocess::managed_shared_ptr实际上不是共享指针;它只是一个辅助类,您可以使用它来定义一个类的类型。来自interprocessdocs:typedefmanaged_shared_ptr::ty

c++ - 在 C++ Builder 中使用 COM

我是COM库的新手,一直坚持在我的C++Builder(XE2)应用程序中使用COMDLL。DLL已注册。允许我创建属于此类DLL的对象并调用它们的方法的步骤是什么?我的意思是静态的。我找不到教程,但我看到了不同的方法:Component>Importcomponent>它会生成一个新的包装器单元...然后呢?用绝对路径导入DLL(为什么?它在系统中注册了)#import"C:\Path\to\the\LIB1.dll"rename_namespace("LIB1")...然后呢?使用CoCreateInstance...具体怎么做?没有导入/包含?在VisualC#中,我处理它只是添

c++ - 在 (unordered_)set 中修改 shared_ptr 是否安全?

存储在set或unordered_set中的元素是不可变的。如果更改存储在set中的元素,这可能会导致该集合不再正常工作。但是,这是否包括将shared_ptr存储在集合中时指向的对象?就set而言,它使用less()来比较两个对象。如果指向的对象更改或引用计数更改,结果不应更改。所以我会理解拥有一组shared_ptr并修改指向的对象是完全安全的。但是,由于unordered_set使用hash()来计算其元素的哈希值,这相当于调用hash()shared_ptr的指向对象,修改指向的对象会给我们带来麻烦。这是正确的吗? 最佳答案

已解决com.mysql.cj.jdbc.exceptions.CommunicationsException异常的正确解决方法,亲测有效!!!

已解决com.mysql.cj.jdbc.exceptions.CommunicationsException异常的正确解决方法,亲测有效!!!文章目录问题分析出现问题的场景报错原因解决思路解决方法检查数据库服务器状态验证网络连接核对连接信息检查防火墙和安全组设置调整MySQL服务器设置总结在开发使用MySQL数据库的Java应用程序时,com.mysql.cj.jdbc.exceptions.CommunicationsException是一个常见的异常,它通常表明客户端与MySQL服务器之间的通信链路出现了故障。这个问题可能会导致你的应用程序无法正常与数据库交互,影响用户体验和数据处理能力

c++ - 从 enable_shared_from_this 返回 self 的 shared_ptr 继承的类的子类

我想知道是否有像这样的伪代码来做一些事情:classA:publicstd::enable_shared_from_this{public:std::shared_ptrgetPtr(){returnstd::static_pointer_cast(shared_from_this());}};classB:publicA{std::vectorcontainer;std::shared_ptraddChild(Achild){container.push_back(child);returngetPtr();}};classC:publicB{public:std::shared_p