草庐IT

understanding-weak-references

全部标签

c++ - 为什么在锁定 weak_ptr 时会出现访问冲突?

我有一个std::weak_ptr。在尝试使用底层对象之前,我锁定它以获得shared_ptr:autofoo_sharedptr=foo_weakptr.lock();if(foo_sharedptr!=nullptr){//dostuffwithfoo}通常这很好用。但是,有时我在锁定调用期间遇到访问冲突:Unhandledexceptionat0x00007FF91F411BC3(My.dll)inMy.exe:0xC0000005:Accessviolationreadinglocation0xFFFFFFFFFFFFFFFF.我的猜测是底层指针被删除了,但是我对weak_pt

c++ - CUDA/C++ - 链接错误 : undefined reference to

我是一名新手,正在寻求有关使用g++将一些已编译的CUDA目标代码链接到C++项目的帮助。之前有一些针对此帖子的问题和解决方案(here和here),但没有一个对我有用,我似乎无法弄清楚原因。不幸的是,为此我一直在使用Windows。我尝试开始工作的简单示例如下所示://kernel.hintcuda_vec_add(float*h_a,float*h_b,float*h_c,intn);添加两个vector的CUDA代码。//kernel.cu#include__global__voidvec_add_kernel(float*a,float*b,float*c,intn){inti

C++ 模板参数和偏特化 : strong or weak typing?

今天,我和我的一个friend在一个愚蠢的错误上苦苦挣扎,我想知道模板参数在C++中是如何工作的。考虑以下代码,我在其中尝试部分特化类attr>其中I是一个unsignedint,虽然MyClass期望一个int参数:#includetemplateclassMyClass{};templatestructattr;templatestructattr>{};intmain(intargc,char*argv[]){attr>att;return0;}g++失败并显示错误消息main.cpp:Infunction‘intmain(int,char**)’:main.cpp:20:22:

c++ - 对`cv::DescriptorMatcher::knnMatch 的 undefined reference

我正在尝试在androidstudio项目中使用opencvnative库。我收到函数knnMatchundefinedreference的错误。我已将openCVLibrary添加到我的项目中,并成功使用了其他openCV功能。是否有具体的使用libopencv_features2d的原因?编译和链接features2d的正确方法是什么?更新:添加我的编译文件我的应用程序build.gradle:applyplugin:'com.android.application'//android{compileSdkVersion27buildToolsVersion'27.0.3'//de

c++ - 使用 shared_ptr 和 weak_ptr 来管理 std::function 的生命周期是否安全?

我已经围绕boost::asio::io_service创建了一个包装器来处理OpenGL应用程序的GUI线程上的异步任务。任务可能是从其他线程创建的,因此boost::asio似乎是这个目的的理想选择,这意味着我不需要编写自己的带有关联互斥锁和锁定的任务队列。我想将每帧完成的工作保持在可接受的阈值以下(例如5毫秒),所以我调用poll_one直到超出所需的预算,而不是调用run.据我所知,这需要我调用reset每当发布新任务时,这似乎运作良好。因为它很短,这里是全部内容,没有#include:typedefstd::functionVoidFunc;typedefstd::share

c++ - 链接时奇怪的 undefined reference

我在以下几行代码中重现了我在一个更大的项目中遇到的行为。我省略了#ifndef守卫和#include指令以提高可读性。链接器错误是在调用make时产生的。makefile包含在问题的末尾。C类继承自B,B继承自A。O是一个完全不同的类。链接器提示:g++-omainmain.cpp-L.-lABC-lO./libO.a(O.o):Infunction`O::foo(A)':O.cpp:(.text+0x1f):undefinedreferenceto`C::C(Aconst&)'这是源代码。我试图让它尽可能小和可读。知道问题出在哪里吗?/*****A.h*****/classA{pub

c++ - 查找导致 undefined reference 错误的源代码行

用C/C++编程时,迟早每个人都会遇到“undefinedreference错误”。这通常是由于缺少库引起的,并且大多数错误都可以在几秒钟内通过链接到缺少的库来修复。但是,例如,当一个人使用带有单独文件的模板进行声明和实现时,可能会得到由“意外”模板实例化引起的undefinedreference。不幸的是,我们现在得到的所有信息都是“undefinedreference错误”的实例,没有可能的原因提示,例如调用者的行号等。我好奇的是:有没有一种简单的方法可以找出调用导致undefinedreference错误的函数/模板的实际源代码行? 最佳答案

c++ - 对 Boost 线程的 undefined reference

我正在尝试编译和使用Boost1.54库,但遇到了死胡同。我编译并安装了文档中提到的库:./bootstrap.sh./b2install我什至尝试使用以下方法完全重新安装:./bootstrap.sh./b2threading=multiinstall我已经使用-lboost_thread和-L*path链接到boost*/bin.v2/libs我仍然收到以下链接器错误:undefinedreferencetoboost::thread::start_thread_noexcept()undefinedreferencetoboost::thread::join_noexcept()

c++ - 带 Eclipse CDT + MinGW + GLEW + GLFW 的 OpenGL : Undefined References

编辑:与此同时,我已经弄明白了这一点,并在下面写了一个详细的答案。我刚刚尝试在Win7上从MSVC10的Express版本切换到EclipseCDT,在配置时我遇到了以下简单OpenGL代码的问题(在VisualStudio中运行良好):#defineGLEW_STATIC#include#includeintmain(){GLFWwindow*w;if(!glfwInit())return-1;w=glfwCreateWindow(640,480,"HelloWorld",NULL,NULL);if(!w){glfwTerminate();return-1;}glfwMakeCont

c++ - Qt 5 : unable to declare signal that takes rvalue reference

可能我遗漏了什么,但我找不到任何信号不能采用右值引用的信息。所以,我有一个包含以下信号声明的类:signals:voidmessageDecoded(HTDataMsg&&msg);当我尝试编译它时,出现错误:moc_htcodec.cpp:Instaticmemberfunction‘staticvoidHTCodec::qt_static_metacall(QObject*,QMetaObject::Call,int,void**)’:moc_htcodec.cpp:71:77:error:cannotbind‘HTDataMsg’lvalueto‘HTDataMsg&&’case