草庐IT

qmake-variable-reference

全部标签

c++ - 警告 : returning reference to temporary

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

c++ - std::condition_variable::wait_for 和 std::condition_variable::wait_until 有什么区别?

referenceI'musing用以下方式解释这两者:wait_for"阻塞当前线程,直到条件变量被唤醒或在指定的超时时间之后"wait_until"阻塞当前线程,直到条件变量被唤醒或到达指定时间点"有什么区别?wait_until是否会自旋,以便线程在收到信号时可以准确地(或多或少地)继续,而wait_for只是在此时将线程重新添加到调度中? 最佳答案 不同之处在于等待持续时间的表示方式:wait_for需要一个相对时间(“等待最多10秒”),而wait_until需要一个绝对时间(“等到2012年10月30日中午12:00”)

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++ - 停止 C++ 11 std::threads 等待 std::condition_variable

我正在尝试了解新C++11标准中的基本多线程机制。我能想到的最基本的例子如下:生产者和消费者在不同的线程中实现生产者将一定数量的项目放入队列中消费者从队列中取出元素(如果有的话)这个例子也在许多关于多线程的教科书中使用,关于通信过程的一切都很好。但是,在停止消费者线程时我遇到了问题。我希望消费者一直运行,直到它得到一个明确的停止信号(在大多数情况下,这意味着我等待生产者完成,以便我可以在程序结束之前停止消费者)。不幸的是,C++11线程缺乏中断机制(例如,我从Java中的多线程中知道)。因此,我必须使用像isRunning这样的标志来表示我希望线程停止。现在的主要问题是:在我停止生产者

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++1y/C++14 : Variable Template Specialization?

根据C++1y/C++14N3690,变量模板特化的类型是否必须与主模板的类型相同?templatechary=f(x);templatedoubley=g();如果是这样,是否有可能以某种方式使主要的未定义?template????y=???;//undefinedtemplatedoubley=g();草案中的哪些内容?类模板的等效功能是:templatestructS{staticchary;};templatestructS{staticdoubley;};和templatestructS;//undefinedtemplatestructS{staticdoubley;};

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指针是未定义的行为。事实上,标准在注释(