草庐IT

code-sharing

全部标签

c++ - 按值返回由互斥量保护的 shared_ptr 是否安全?

这是一个代码示例:classA{boost::mutexa_mutex;boost::shared_ptra;boost::shared_ptrclone_a(void){boost::lock_guardlock(a_mutex);returna;}};建议boost::shared_ptr对A::a的复制构造函数调用将在boost::lock_guard析构函数调用之前尽管有编译器优化。那么,调用A::clone_a()安全吗? 最佳答案 如果您所说的“安全”是指您不会在a上发生数据竞争,那么是的。正如你所说。但是,正如您可能知

c++ - 我如何在 void* 和 boost shared_ptr 之间进行转换

我有这些行:typedefboost::shared_ptrA_SPtr;void*f(void*var){...我希望能够做这样的事情:A_SPtrinstance=(void*)(var);我该怎么做?另外,我怎样才能将意义从shared_ptr转换为void*? 最佳答案 只需将指针转换为指向和来自void*的共享指针。shared_ptr到void*:f(reinterpret_cast;(&A_SPtr));void*回到shared_ptr:A_SPtrinstance=*reinterpret_cast(boost::

c++ - 如何使用移动构造函数正确处理 shared_ptr 的映射?

假设我有一个容器std::map>我想用外部函数填充它并避免处理它的内容。所以我有typedefContainerstd::map>Container&&f(){Containerbar;autofoo=std::shared_ptr(newMyClass());bar.insert(std::make_pair(0,foo));std::coutprint_smthprint_smth如果我使用传统的复制构造函数,一切都会按预期工作。 最佳答案 这远太复杂了。为什么不直接说:intmain(){Containerbaz{{0,st

c++ - error_code 与 errno

我正在研究C++11标准。我想了解error_code和errno是否相互关联?如果是那么如何?如果否,那么我应该在哪些条件下设置errno以及在哪些条件下设置error_code?我做了一个小测试程序来理解这一点,但仍然有点困惑。请帮忙。#include#include#include#include#include#includeusingnamespacestd;intmain(){try{thread().detach();}catch(constsystem_error&e){cout 最佳答案 errno由那些将其记录为

npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.

npminstall时报错codeCERT_HAS_EXPIRED一、报错情况二、解决方案一、报错情况 npmERR!codeCERT_HAS_EXPIREDnpmERR!errnoCERT_HAS_EXPIREDnpmERR!requesttohttps://registry.npm.taobao.org/vue-loaderfailed,reason:certificatehasexpirednpmERR!Acompletelogofthisruncanbefoundin:npmERR!D:\Environment\nvm\node_cache\_logs\2024-01-22T04_34

c++ - 错误 : no instance of overloaded function "std::make_shared" matches the argument list

查看ApreviousstackQuestionstd:make_sharedvsstd::shared_ptr,我试图在一个uni项目中实现它。这是之前的“问题”:Ican'tthinkofanysituationwherestd::shared_ptrobj(newObject("foo",1));wouldbepreferredtoautoobj=std::make_shared("foo",1);因此我采用了这段代码:std::shared_ptrpT1(newTriangle(pCanvas,30,30,30,60,60,30,255,0,0));并将其修改为这段代码:aut

c++ - 错误 : Qt5 Video render error code 80040218

当在Qt5中运行一个使用QWebView制作的应用程序时,我访问了一个带有HTML5视频播放器的页面,但是视频不播放并且qt/directshow显示以下错误:DirectShowPlayerService::doRender:Unresolvederrorcode80040218DirectShowPlayerService::doRender:Unresolvederrorcode80040218详细信息:Qt5.1.1MingW4.832bitWindows764位我怀疑这就是为什么我的Windows是64位,但*QT/MingW**在32位上运行并且可能会遗漏一些DLL/LIB

c++ - shared_ptrs 的 vector 行为神秘

我创建了一个Base类shared_ptr的vector来保存Derived类shared_ptr,并运行到一些问题。下面的简化示例显示了发生的情况。#include#include#includeusingnamespacestd;classBase{public:Base(inti):val(i){}intval;};classDerived:publicBase{public:Derived(inti):Base(i){}};intmain(){vector>vec1{make_shared(5),make_shared(99),make_shared(18)};for(auto

在VS Code Tasks.json上使用基于#{fileExtName}的任务

我一直在尝试使用条件来检查当前打开的文件扩展名称,以便我可以自动使用不同的任务,但没有成功。这是当前的任务。{"version":"0.1.0","isShellCommand":true,"showOutput":"always","suppressTaskName":true,"echoCommand":true,"tasks":[{"taskName":"Buildc++","command":"","isBuildCommand":true,"args":["g++","-o","${fileBasenameNoExtension}","${fileBasename}"]}]}我的目标

c++ - 为什么 std::shared_ptr 的别名构造函数不初始化 std::enabled_shared_from_this?

考虑以下代码:structFoo:std::enable_shared_from_this{};structBar{Foofoo;};intmain(){std::shared_ptrbar_p(newBar);//makeshared_ptrtomemberwithaliasingconstructorstd::shared_ptrfoo_p(bar_p,&bar_p->foo);assert(bar_p->foo.shared_from_this());//fail!throwsbad_weak_ptr}不幸的是,它没有按预期工作(至少在GCC4.8.2中)。我查看了代码,似乎别名