草庐IT

strong-reference-cycle

全部标签

c++ - 警告 : returning reference to temporary

我有这样的功能conststring&SomeClass::Foo(intValue){if(Value10)return"";elsereturnSomeClass::StaticMember[i];}我收到警告:返回对临时的引用。这是为什么?我认为函数返回的两个值(对constchar*""的引用和对静态成员的引用)不能是临时的。 最佳答案 这是一个发生不需要的隐式转换的示例。""不是std::string,因此编译器试图找到一种方法将其变成一个。并且通过使用string(constchar*str)构造函数,它在该尝试中成功。

c++ - 由于 undefined reference ,无法编译 OpenCV?

代码很简单,基本上直接来自this教程。我正在运行ArchLinux并将OpenCV库存储在/usr/include/中。我还检查以确保/usr/include在我的PATH中。#include#include#includeusingnamespacecv;intmain(intargc,char**argv){Matimage;MatgrayImage;if(!argv[1]){std::cerr编译器进程成功找到并包含这些头文件,但我仍然在编译时遇到undefinedreference错误。如果您查看我包含的头文件,它们会进一步包含/usr/include/opencv2中的其他

c++ - 链接到静态库时出现 "undefined reference"

g++(Ubuntu/Linaro4.4.4-14ubuntu5)4.4.5我有以下名为sdpAPI.a的静态库。我在尝试将其与我的测试应用程序链接时遇到问题。只是想知道我是否做错了什么。静态库已经用g++构建了;我的目录如下:/projects/unit_test/main.c/projects/unit_test/sdp/inc/sdpAPH.h/projects/unit_test/sdp/lib/sdpAPI.a我的源代码是这样的:#include#include"sdpAPI.h"intmain(void){printf("-----TESTSDP------\n");try

c++ - 链接器错误 C++ "undefined reference "

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?尝试通过g++-oprog1main.cpp-std=c++0x编译我的程序我得到错误:/tmp/cc1pZ8OM.o:Infunction`main':main.cpp:(.text+0x148):undefinedreferenceto`Hash::insert(int,char)'collect2:error:ldreturned1exitstatusma​​in.

C++ 模板, undefined reference

我有一个这样声明的函数:templateTread();并定义如下:templateTpacketreader::read(){offset+=sizeof(T);return*(T*)(buf+offset-sizeof(T));}但是,当我尝试在main()函数中使用它时:packetreaderreader;reader.read();我从g++收到以下错误:g++-omainmain.opacket.omain.o:Infunction`main':main.cpp:(.text+0xcc):undefinedreferenceto`intpacketreader::read(

c++ - 标准::原子 | compare_exchange_weak 与 compare_exchange_strong

我不确定是我不理解还是文档没有明确表述。以下摘自最新草案(N3126,第29.6节):boolatomic_compare_exchange_weak(volatileA*object,C*expected,Cdesired);boolatomic_compare_exchange_weak(A*object,C*expected,Cdesired);boolatomic_compare_exchange_strong(volatileA*object,C*expected,Cdesired);boolatomic_compare_exchange_strong(A*object,C*

c++ - 将静态 C 库与 C++ 代码链接时出现 "undefined reference to"错误

我有一个测试文件(仅用于链接测试),我在其中重载了new/delete我自己的运营商malloc/free名为libxmalloc.a的库.但是在链接静态库时,我不断收到“undefinedreference”错误,即使我更改了test.o的顺序和-lxmalloc.但是一切都适用于链接这个库的其他C程序。我对这个问题感到很困惑,并感谢任何线索。错误信息:g++-m64-O3-I/usr/include/ethos-I/usr/include/nacl/x86_64-c-otest.otest.cppg++-m64-O3-L.-odemotest.o-lxmalloctest.o:In

C++ 标准 : dereferencing NULL pointer to get a reference?

这个问题在这里已经有了答案:Isnullreferencepossible?(4个回答)关闭3年前。我想知道C++标准对这样的代码有何规定:int*ptr=NULL;int&ref=*ptr;int*ptr2=&ref;实际上,结果是ptr2为NULL,但我想知道,这只是一个实现细节还是标准中已明确定义?在不同的情况下,对NULL指针的取消引用应该会导致崩溃,但在这里我取消引用它是为了获得一个由编译器作为指针实现的引用,因此实际上并没有对NULL进行实际的取消引用。 最佳答案 取消引用NULL指针是未定义的行为。事实上,标准在注释(

c++ - 为什么 "universal references"具有与右值引用相同的语法?

我刚刚对那些(相当)新特性进行了一些研究,我想知道为什么C++委员会决定为它们引入相同的语法?似乎开发人员不必浪费一些时间来理解它是如何工作的,而一种解决方案可以让我们考虑更多的问题。就我而言,它是从可以简化为的问题开始的:#includetemplatevoidf(T&a){std::coutvoidf(T&&a){std::cout我首先在VS2013上编译它,它按预期工作,结果如下:f(T&a)forlvaluesf(T&&a)forrvalues但是有一件可疑的事情:智能感知在f(a)下划线。我做了一些研究,我明白这是因为类型崩溃(ScottMeyers命名它的通用引用),所以

C++最佳实践: Returning reference vs.对象

我正在尝试学习C++,并尝试理解返回的对象。我似乎看到了两种方法,需要了解什么是最佳做法。选项1:QListret;Weight*weight=newWeight(cname,"Weight");ret.append(weight);ret.append(c);return&ret;选项2:QList*ret=newQList();Weight*weight=newWeight(cname,"Weight");ret->append(weight);ret->append(c);returnret;(当然,我也可能不明白)。哪种方式被认为是最佳实践,应该遵循?