草庐IT

this_project

全部标签

c++ - 创建线程并让 "this"指针从构造函数中逃逸总是安全的吗?

我对以下代码感到困惑(来自PreferUsingActiveObjectsInsteadofNakedThreads):classActive{public:classMessage{//baseofallmessagetypespublic:virtual~Message(){}virtualvoidExecute(){}};private://(suppresscopyingifinC++)//privatedataunique_ptrdone;//lesentinelmessage_queue>mq;//lequeueunique_ptrthd;//lethreadprivate

c++ - 为继承 enable_shared_from_this 的类获取 unique_ptr

通常我更喜欢从工厂返回unique_ptr。最近我遇到了为继承enable_shared_from_this的类返回unique_ptr的问题。此类的用户可能会意外调用shared_from_this(),尽管它不属于任何shared_ptr,这会导致std::bad_weak_ptr异常(或C++17之前的未定义行为,通常作为异常实现)。代码的简单版本:classFoo:publicenable_shared_from_this{stringname;Foo(conststring&_name):name(_name){}public:staticunique_ptrcreate(c

c++ - 错误 : incomplete type when using HMAC_CTX in C++ project

我正在尝试编译这个库ndn-cxx在我的笔记本电脑里。我已经在另一台计算机上尝试过并且编译成功但现在我收到此错误并且我认为它与openssl相关。我使用sudoapt-cachesearchlibssl|确认我的笔记本电脑中有openssl|grepSSL结果是:libssl-ocaml-OpenSSL的OCaml绑定(bind)(运行时)libssl-ocaml-dev-OpenSSL的OCaml绑定(bind)libssl0.9.8-SSL共享库libsslcommon2-企业消息传递系统-通用SSL库libsslcommon2-dev-企业消息系统-通用SSL开发文件我在尝试编译

c++ - 继承类中的 shared_from_this() 类型错误(是否有 dyn.type-aware 共享指针?)

我有一个使用enable_shared_from_this的ViewController基类classViewController:publicstd::enable_shared_from_this{//...};和一个child:classGalleryViewController:publicViewController{voidupdateGallery(floatdelta);}问题出现了,当我尝试将我当前的实例传递给第3方时(比如lambda函数被安排在某处)实例(GalleryViewController)会释放一个(罕见的)条件,所以我不能直接捕获“this”,我需要用

c++ - "this"GDB 回溯中的指针变化

我正在检查核心转储,并注意到在一个帧中的“this”指针与下一帧(在同一线程中)不同。不仅仅是一点点不同,它从0x8167428变成了0x200。我不太精通GDB,但这对我来说似乎不对。这是有问题的吗?如果是,原因可能是什么? 最佳答案 如果在不同的对象上调用下一帧中的函数(即使对象是同一类型),则this指针可以在gdb跟踪中的帧之间改变,因为这是为了具体实例。这可能不是您的问题。0x200不是this的有效值,几乎可以肯定表示某种类型的内存损坏。this指针有时存储在堆栈中并作为不可见的第一个参数传递给函数。因此,如果您损坏了堆

c++ - eclipse CDT : rebuilding a dependent project

我正在使用在linux上运行的eclipseIndigo+CDT开发一个C++项目它由一个库项目和一个带有该库单元测试的项目组成。显然第二个项目依赖于第一个。两个项目都使用外部构建器但是当我修改第一个项目的header时,它不会重建测试项目。而且我不能让它这样做......它只会重新链接第二个项目,即使标题包含在测试项目中也是如此。这非常烦人,因为我经常在处理库时进行工作构建,然后在某个时候我进行了完全重建,我看到了很多错误,这些都是我30分钟前做的事情!CDT全局构建控制台的示例输出:****BuildofconfigurationDebugforprojectlibxxx****m

c++ - VS2008 : Disable warnings in included header files outside the project

这可能吗?我不想全局禁用警告,因为我想检查我自己的头文件是否有警告。 最佳答案 您可以禁用有关包含外部头文件的警告:#pragmawarning(push)#pragmawarning(disable:thewarning)//includehere#pragmawarning(pop)如果您需要多次包含标题,您可以使用编译指示创建一个标题并将其包含在内。问了同样的问题here. 关于c++-VS2008:Disablewarningsinincludedheaderfilesoutsi

c++ - 为什么 `this`等于0x0,导致我的程序崩溃?

我正在设计一个简单的Connect4游戏。到目前为止,我有4个底层类:Colour-负责表示颜色(RGBA)。包括转换运算符。Player-代表游戏玩家。每个Player有一个Colour和一个名字。Board-代表游戏板。它包含维度,以及Tile的二维vector。具有这些尺寸。Tile-Board中的嵌套类.代表板上的一个空间。每个Tile有一个Colour和一个std::unique_ptr给那block瓷砖的主人。所有者以nullptr开头并且可以一次更改为Player.颜色一开始是透明的黑色。我测试了我的Colour类,它似乎工作正常。我的Player类(class)也处于最

c++ - 错误 : ‘Class’ was not declared in this scope

请问,如何在另一个类中定义类。在下面的代码中。我尝试以#define"CCompField.h"的方式定义它,但它不起作用。:(。我认为这是非常常见的编程问题,可能在互联网上已经解决了100000次,但我不知道如何找到它。感谢您的帮助。#ifndefCNEWGAME_H#defineCNEWGAME_HclassCNewGame{public:CNewGame();~CNewGame();voidBeginnerGame();voidIntermediateGame();voidAdviceGame();voidHowToPlay();voidNetGame(intmode);intM

c++ - 浮点相等测试和超精度 : can this code fail?

讨论开始于myanswertoanotherquestion.以下代码确定machineepsilon:floatcompute_eps(){floateps=1.0f;while(1.0f+eps!=1.0f)eps/=2.0f;returneps;}在评论中建议1.0f+eps!=1.0f测试可能会失败,因为C++标准允许使用额外的精度。尽管我知道浮点运算实际上以更高的精度执行(比实际使用的类型指定的精度更高),但我碰巧不同意这个提议。我怀疑在比较操作期间,例如==或!=,操作数没有被截断到它们类型的精度。换句话说,1.0f+eps当然可以比float(例如,longdouble)