草庐IT

non-unique

全部标签

c++ - unique_ptr 的赋值运算符复制由引用存储的删除器。它是功能还是错误?

想象一下当你有一个unique_ptr时的情况使用由引用存储的自定义删除器:structCountingDeleter{voidoperator()(std::string*p){++cntr_;deletep;}unsignedlongcntr_=0;};intmain(){CountingDeleterd1{},d2{};{std::unique_ptrp1(newstd::string{"first"},d1),p2(newstd::string{"second"},d2);p1=std::move(p2);//doesd1=d2undercover}std::cout令我惊讶的

时间:2019-05-06 标签:c++unique_ptr参数传递

假设我有以下代码:classB{/**/};classA{vectorvb;public:voidadd(B*b){vb.push_back(b);}};intmain(){Aa;B*b(newB());a.add(b);}假设在这种情况下,所有原始指针B*可以通过unique_ptr处理.令人惊讶的是,我无法找到如何使用unique_ptr转换此代码。.经过几次尝试,我想出了以下代码,它可以编译:classA{vector>vb;public:voidadd(unique_ptrb){vb.push_back(move(b));}};intmain(){Aa;unique_ptrb(

c++ - std::unique_ptr 的 clang 错误

我有一个名为IList的基础对象。然后我有VectorList,它继承了IList。然后我有这样的功能:std::unique_ptrfactory(){autovlist=std::make_unique();returnvlist;}这在gcc下编译没有问题,但是clang给出以下错误:test_file.cc:26:9:error:noviableconversionfrom'unique_ptr>'to'unique_ptr>'returnvlist;如何正确处理此类错误? 最佳答案 看起来(您的)Clang在这方面仍然遵循

c++ - std::is_constructible on type with non-public destructor

std::is_constructible的预期结果是什么?在具有私有(private)或protected析构函数的类型上?例如,即使只有friend可以释放它,我仍然可以在堆上构造这样一个对象:#includeclassFoo{friendvoidfreeFoo(Foo*);public:Foo(){}private://Destructorisprivate!~Foo(){}};voidfreeFoo(Foo*f){deletef;//deletingafooisfineherebecauseoffriendship}intmain(){Foo*f=newFoo();//dele

c++ - std::unique_lock<std::mutex> 禁止dll卸载

我在卸载dll时遇到问题。就像this一但退出不同。我正在使用LoadLibraryA加载一个dll然后调用一个函数并用FreeLibrary关闭dll.但是,dll并没有卸载,但FreeLibrary返回成功。减少代码:voidfoo(){std::unique_locklock(mtx_);}在调试代码和查看ProcessExplorer时unique_lock创建第二个线程,但是为什么呢?此外,只要应用程序运行,该线程就会运行。没有别的了;dll没有其他句柄,没有其他功能。此外,dll仍在程序中加载。如果我删除上面的行,一切都很好。dll卸载正常,没有额外的线程。所以我的问题是,

Windows 批处理脚本 : Collect unique occurences of a string in a file

我有一个文件,其中逗号前的第一个字符串是某种标识符。这是一个示例:A,bla,bla...B,bla,bla...A,bla,bla...C,bla,bla...我需要解析一个文件来收集这个字符串的所有唯一出现。因此,理想情况下,在处理之后我会得到某种数组[A,B,C]。问题是批处理脚本不支持官方数组。我知道有一些变通办法,但我检查过的那些看起来很丑陋。到目前为止,我所拥有的是这样的:FOR/F"tokens=1delims=,"%%iin(%FILE%)do(echo%%i)这会产生输出:ABAC如何消除字符串的重复出现?实现这一目标的优雅方式是什么?请分享您对如何解决此问题的想法。

c++ - 如何将 unique_ptr 与 operator new 一起使用

我正在分配一block具有输入大小的临时内存,我想使用unique_ptr跟踪适当的生命周期,而不必明确担心自己释放它。这是我想出的:{std::unique_ptrsp;sp.reset(reinterpret_cast(operatornew(100)));}我不得不使用BYTE因为MSVC不会用std::unique_ptr编译.根据我的测试,new和delete运算符按预期调用。由于这是一种不常见的用法(即显式使用operatornew),我想检查一下这没有什么问题吗?是否有更好/更清洁的替代品? 最佳答案 假设您想使用ne

java - Spring 安全 java.lang.IllegalArgumentException : Non-hex character in input

我在Windows7环境中的Tomcat服务器中部署了一个现有的Maven项目。我正在使用tomcat7,spring-security-core3.1.0。但是,每次我登录我的webapp时,我都会收到一个错误java.lang.IllegalArgumentException:Non-hexcharacterininput该代码在Linux环境中运行良好。所以我在想这是因为我在本地环境中使用的是windows7。当我查看互联网时,我发现这是linux和windows之间的编码问题。我试过设置JAVA_TOOL_OPTIONS-Dfile.encoding=UTF8但还没有成功。请帮

.net - 如何以编程方式检查 WCF Http/Non-Http 激活组件?

我需要检测在我的产品安装过程中是否安装了WCFHttp/Non-Http激活组件。我该怎么做?谢谢。 最佳答案 对于IIS7,检查以下注册表项:HKEY_LOCAL_MACHINE\Software\Microsoft\InetStp\Components\对于以下组件:流程模型-ProcessModel.NET环境-NetFxEnvironment配置API-WASConfigurationAPI从这个页面:http://learn.iis.net/page.aspx/135/discover-installed-componen

asp.net - Windows Azure : How to 301 non-www url to www for a domain

我最近部署了WindowsAzure应用程序并通过DreamHost门户配置了我的域的DNS。现在我的网站可以通过http://www.coziie.com访问,但不能通过非www地址。我在一篇文章中读到我应该在DNS设置中添加一条A记录并指向WindowsAzure的虚拟IP。如何获得我的WindowsAzure部署的虚拟IP?或者是否有更好的方法将所有非wwwurl301重定向到www?已解决:我能够通过简单地在DreamHostDNS设置中配置网站重定向设置来解决这个问题。http://coziie.com的简单301重定向到www.coziie.com解决了这个问题。