草庐IT

my_shared_ptr

全部标签

c++ - 诅咒库 : why does getch() clear my screen?

我正在尝试使用C++学习curses库(pdcurses,因为我在Windows操作系统中)。我有一个显示3个窗口的程序,然后是一个while循环来根据getch()捕获的按键进行一些处理。当按下F1键时,循环退出。然而,尽管使用wrefresh()刷新了所有三个窗口,但在我输入第一次按键之前没有任何显示。没有while循环,一切都显示正常。我做了很多测试,好像第一次调用getch()会完全清除屏幕,但后续的不会。我的问题是:我错过了什么?起初,我想也许getch()正在调用一个隐式的refresh(),但为什么后续调用它的行为不同?非常感谢您的帮助。这是代码。#includeintm

c++ - 带有容器和默认分配器的模板模板参数 : can I make my declaration more compact?

我在看这个有趣的话题:https://stackoverflow.com/a/16596463/2436175我的具体案例涉及使用来自opencv的cv::Point_和cv::Rect_的标准容器声明模板函数。我想针对以下模板:我将使用的标准容器类型完成cv::Point_和cv::Rect_定义的基本数据类型我最终做出了以下声明:templateclassContainer_t>voidCreateRects(constContainer_t,std::allocator>>&points,constTvalue,Container_t,std::allocator>>&rects

c++ - 如何从 udp 端点获取 *my* ip

Boost.Asio的udp::endpoint有一个成员是远程地址。因为我在多个接口(interface)上监听(像这样):udp_socket(io_service,udp::endpoint(udp::v4(),port))在我的处理程序中,我不知道哪个网络接口(interface)收到了数据包。如果不遍历网络接口(interface)并在每个接口(interface)上寻找端点地址和我的IP之间的相似性,我能否获得我从中获取消息的接口(interface)的IP? 最佳答案 没有。Boost.Asio不提供识别数据报目标地址

c++ - 为什么 std::shared_ptr 没有 [] 运算符?

这个问题在这里已经有了答案:Whyisn'tthereastd::shared_ptrspecialisation?(1个回答)关闭7年前。我想知道std::shared_ptr没有为数组定义[]运算符这一事实背后的基本原理是什么。特别是为什么std::unique_ptr具有此运算符而不是std::shared_ptr?

c++ - 使用自定义删除器 boost scoped_ptr/scoped_array

我不知道如何让scoped_ptr或scoped_array使用自定义删除器。也许还有另一种实现类似于shared_ptr允许受控删除?顺便说一句,为什么shared_ptr允许自定义删除器而scoped_ptr不允许?只是好奇。 最佳答案 Idon'tseehowtogetscoped_ptrorscoped_arraytousecustomdeleter你不能。Maybethereisanotherimplementationwhichallowscontrolleddeletionsimilartoshared_ptr?如果您

c++ - 如何从 shared_ptr 调用私有(private)析构函数?

我有一个resource_manager维护std::vector>的类在内部。resource_manager是resource的好友类.我要resources只能由resource_manager创建/删除,所以我将其构造函数设为私有(private)(可以正常工作)。但是,如果我将析构函数设为私有(private),则代码不会编译,因为析构函数由boost::shared_ptr调用,这不是resource的friend.我正在考虑通过只返回constresource*来强制执行“不要被客户删除”规则来自resource_manager,但不知何故我对这种方法提供的安全性不满意(

c++ - 如何将 shared_ptr 作为参数传递给可变对象?

我想通过对函数的智能指针引用传递一个对象。该函数可能会更改引用对象的值,但可能不会更改引用本身。有两种明显的方法可以解决这个问题。按值传递shared_ptr的第一种方法-它是引用,因此它本身不需要按引用传递。这样做的明显问题是引用的复制,这表明存在一些引用计数开销。voidfoo(shared_ptrp)第二种方法是通过const引用传递shared_ptr-避免复制shared_ptr实例,而是暗示对引用对象的访问需要两层解引用而不是一层。voidfoo(constshared_ptr&p)在实践中,这些理论开销通常微不足道且无关紧要。这对我来说表明,我应该几乎总是遵循一些标准惯例

c++ - weak_ptr 是基类的,而 shared_ptr 是派生类的?

我有一个结构来管理从基类派生的对象Entity,但不控制它们的生命周期。我希望这个结构被赋予像weak_ptr这样的弱指针这样它就可以知道该对象是否已在其他地方被销毁。但是,在共享指针所在的管理结构之外,我希望共享指针更具体shared_ptr(SpecificEntity使用Entity作为基类)。有没有什么办法可以做到这一点,或者类似的东西? 最佳答案 很有可能。您可以随时转换shared_ptr到shared_ptr隐含地,对于另一个方向你有std::static_pointer_cast和std::dynamic_point

c++ - unique_ptr::deleter_type::pointer 有什么用?

std::unique_ptr指定存储不是T*如您所料,但是类型为std::unique_ptr::pointer的对象.这基本上定义为D::pointer如果存在这样的类型,并且T*否则。因此,您可以通过适本地自定义删除器来自定义底层原始指针类型。什么时候这样做是个好主意?它是干什么用的?我能找到的唯一讨论是thisnote,这暗示“更好地支持[ing]共享内存上下文中的容器和智能指针”,但这并没有完全说明很多问题。 最佳答案 最初的动机是启用boost::offset_ptr的使用作为unique_ptr下的表示,这将允许在进程

c++ - 如果我需要多态性,我应该使用原始指针而不是 unique_ptr 吗?

如果我需要多态性,我应该使用原始指针而不是unique_ptr吗?我看到一些线程显示如何使用unique_ptr进行多态行为。我不确定这是否值得,我宁愿使用原始指针。您能否对此发表评论,您对这种情况下原始指针与智能指针的看法? 最佳答案 下面的简单代码表明std::unique_ptr从多态性的角度来看工作得很好,打印"HellofromDerived."。#include#includeusingstd::cout;structBase{virtual~Base(){}virtualvoidSayHello(){coutpBase