草庐IT

GET_FROM_GALLERY

全部标签

c++ - auto_ptr、immediate get() 和 release()——有用吗?

我正在处理别人的代码,其中包含很多这样的语句std::auto_ptrsmartptr(newObjectA(this));objects_list.push_back(smartptr.get());smartptr.release();这个有用吗?在这里使用智能指针而不是仅仅写有什么实际原因吗?objects_list.push_back(newObjectA(this)); 最佳答案 objects_list.push_back(newObjectA(this));这可能会泄漏内存。让我们看看当我们分解它时会发生什么:newO

c++ - 即使正确使用 make_shared,shared_from_this() 也会导致 std::bad_weak_ptr

我正在使用独立的Asio和C++11创建一个C++服务器应用程序,但遇到错误,这就是我寻求帮助的原因。错误在类里面worker_thread,在通话期间shared_from_this(),一个bad_weak_ptr引发异常,导致程序崩溃。布局类(class)connection_manager创建并存储std::shared_ptr类型的对象在std::vector里面容器类(class)worker_thread继承自std::enable_shared_from_this.类(class)worker_thread创建std::shared_ptr类型的对象.类(class)c

c++ - 为什么 insert from std::map 不想更新? [C++]

我试图多次将同一个键插入到map中,但具有不同的值。它不起作用。我知道operator[]可以完成这项工作,但我的问题是,这种插入行为是否正确?insert()不应该插入吗?我想知道标准是怎么说的。不幸的是我没有它(C++标准)所以我无法检查。感谢您提供有用的答案。 最佳答案 如果要插入具有不同值的相同键,则需要std::multimap。如果键已经存在,std::map::insert将不会执行任何操作。std::map::operator[]将覆盖旧值。对于STL引用,您不需要C++标准本身;类似http://www.cplus

c++ - 海湾合作委员会错误 : invalid conversion from double* to const double

我使用的是gcc4.5.0版。使用下面的简单示例,我假设得到一个错误invalidconversionfromdouble*toconstdouble*#includeusingnamespacestd;voidfoo(constdouble*a){cout为什么编译没有错误?类似的反例如下:#includeusingnamespacestd;voidfoo(constdouble**a){cout(第二个示例的解决方案:将foo定义为foo(constdouble*const*a)。感谢JackEdmonds的评论,这解释了错误消息) 最佳答案

c++ - 如何为我的类生成一个 std::get 类函数?

比如我有一个类structA{inta;boolb;};我想生成一个模板函数来获取它的元素(比如std::get来获取元组元素)templateautoGet(T&t);templateint&Get(A&a){returna.a;}templatebool&Get(A&a){returna.b;}intmain(){Aa;Get(a)=10;Get(a)=true;return0;}上面的代码不起作用。挑战在于我不知道任意类的Get返回类型。有什么办法可以实现吗?谢谢。 最佳答案 假设您不介意以“手动方式”进行此操作,您可以非常简

c++ - C 到 C++ : Transitioning from one language to the other

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:C++tutorialforexperiencedCprogrammer.我经常使用多种语言进行编程,最近一直在使用C++。基本上我的类只是对纯C代码的包装。几乎就像一个带有关联方法的结构。这为我的数据提供了我想要的封装和隐私。我有一个小的类层次结构,几乎没有使用继承。我熟悉面向对象的概念,并且知道当我需要了解这方面的特定概念时可以使用哪些搜索词。然而,正如我在编程世界中的尝试所发现的那样,通常真正有用的语言特性对新手或新手来说是隐藏的,而我需要的有用的部分已经写好了并且在某个地方的库中可以免费使用可用(大多

c++ - 错误 C2440 : '=' : cannot convert from 'const char [2]' to 'char'

我正在学习C++,但我在做一些新手的事情时遇到了问题。我正在尝试创建一个非常小的应用程序,它接受用户输入并将其存储到一个char数组中。然后我解析该数组并删除所有括号和dases并显示它。像下面这样(325)858-7455到3258587455但是我遇到了错误errorC2440:'=':cannotconvertfrom'constchar[2]'to'char'下面是我的简单代码,可以很容易地放入编译器并运行。#include"stdafx.h"#include#includeusingnamespacestd;/*ThisisatemplateProject*/intmain(

c++ - std::future.get() 有时卡在 os x 中

我有两个线程,一个线程应该接收和处理来自另一个线程的请求。第二种是同步传输请求和接收响应。我尝试了以下方案:成对队列(值(value),promise)。第一个线程创建一个promise并将其插入同步队列并等待future.get()的返回值问题是有时线程卡在future.get()上,但是当我暂停程序执行并继续时它再次正常工作。这个stucks具有随机​​性。FutureQueue.h#ifndefFutureQueue_h#defineFutureQueue_h#include#include#include#include#includetemplateclassWork{pub

c++ - 如何在没有多余 RC 操作的情况下在派生类中使用 shared_from_this?

如果我想创建一个shared_ptr在从基类继承的层次结构中的派生类成员函数中,我可以使用shared_from_this和static_pointer_cast:classBase:publicstd::enable_shared_from_this{};classDer:publicBase{public:std::shared_ptrmake_SP_to_Me(){returnstd::static_pointer_cast(shared_from_this());}};我担心的是static_pointer_cast通过lvalue-ref-to-const接受它的参数,所以当

c++ - 来自同一个 enable_shared_from_this 实例的两个 shared_ptr

鉴于这个类是enable_shared_from_this:classconnection:publicstd::enable_shared_from_this{//...};假设我从sameconnection*创建了两个std::shared_ptr实例,如下所示:std::shared_ptrrc(newconnection);std::shared_ptrfc(rc.get(),[](connectionconst*c){std::cout到目前为止一切正常,因为资源{connection*}由单个shared_ptr—rc准确地说,fc只是有一个假的删除器。之后,我这样做:a