草庐IT

this_record

全部标签

c++ - 使用 C+11 和 Newlib 时出现错误 "sigemptyset was not declared in this scope"

在Newlib下的Cygwin上使用sigemptyset时,我们会捕获编译器错误。该错误发生在C++编译器中,但仅在使用-std=XXX时才会发生。如果没有标准选项,测试程序将按预期编译和执行。下面是测试程序,后面是感兴趣的Cygwin头文件。我在Cygwinheader中没有看到任何可疑的内容。我尝试过像#define_GNU_SOURCE和#define_XOPEN_SOURCE700这样的技巧。我还尝试过使用全局和std命名空间等技巧。相关见Whatdoes-D_XOPEN_SOURCEdo/mean?和Namespaceissuesinc++11?.编译失败的原因是什么,我该

c++ - 在 'this' 指针上使用 placement new 是否安全

当前实现我有一个包含unique_ptr字段的类,这些字段相互依赖:classResourceManager{ResourceManager(){}ResourceManager(A*a_ptr):b_ptr(newB(a)),c_ptr(newC(b_ptr.get())){}ResourceManager&operator=(ResourceManager&&that){//Calldestructor,thenconstructanewinstanceontop~ResourceManager();ResourceManager*new_this=new(this)Resourc

c++ - 这个技巧是否会使在构造函数 'just work' 中调用 shared_from_this() 变得危险?

C++专家的问题。我们都知道在类构造函数中调用shared_from_this()会导致bad_weak_ptr异常,因为尚未创建实例的shared_ptr。为了解决这个问题,我想到了这个技巧:classMyClass:publicstd::enable_shared_from_this{public:MyClass(){}MyClass(constMyClass&parent){//Createatemporarysharedpointerwithanull-deleter//topreventtheinstancefrombeingdestroyedwhenit//goesouto

c++ - std::vector::assign/std::vector::operator=(const&) 是否保证重用 `this` 中的缓冲区?

如果我将一个vector分配或复制到另一个vector(其容量与前者的大小相同或更大),我可以假设后者的缓冲区将被重用吗?下面的例子证明我可以,但是,标准保证吗?std::vector::assign和std::vector::operator=在这方面的行为有什么不同吗?#include#include#includeintmain(){std::vectora{1,2,3,4,5};std::vectorb{1,2,3,4};std::vectorc{1,2,3,4,5,6,7,8,9,10};std::coutLiveexample.更新:Thisanswer提到voidassi

c++ - 将 "this"参数显式传递给方法调用

是否可以在C++调用类方法中显式传递第一个“this”参数?像这样:structA{voidsome(){}};....Aa;A::some(&a);//~a.some();对于合理的问题“为什么?”:我需要实现std::bind模拟,它可以很好地处理这样的结构:voidf(int);bind(f,3);但这行不通:bind(&A::some,&a);更新:伙计们,我的问题显然不是很清楚。我知道如何使用std::bind,我想知道它如何处理显式传递给它的参数的结构:std::bind(&A::some,&a); 最佳答案 这是一个调

c++ - this[i] 在没有重载的情况下在 C++ 中是什么意思

这是来自WebKit的代码:classExecState:publicRegister{JSValuecalleeAsValue()const{returnthis[JSStack::Callee].jsValue();}...}JSStack::Callee是const,Operator[]没有在ExecState或中重载注册,那么this[JSStack::Callee]在c++中的语法是什么? 最佳答案 好吧,this是一个指向ExecState的指针,使用带有指针的下标运算符可以使其表现得就像一个数组。也就是说,表达式thi

C++ 指向重载索引的箭头 ( this->[ ] )

我有一个简单的类,我重载了它的索引运算符:classdgrid{double*data;//1DArrayholds2Ddatainrow-majorformatpublic:constintnx;constintny;double*operator[](constintindex){return&(data[index*nx]);}}这样dgrid[x][y]就像二维数组一样工作,但数据在内存中是连续的。但是,从内部成员函数来看,这有点笨拙,我需要做一些像(*this)[x][y]这样的事情,但看起来很臭,尤其是当我有部分如:(*this)[i][j]=(*this)[i+1][j]

C++ : Understanding "this" Pointer

这个问题在这里已经有了答案:InC++,whyistheaddresschangedwhenthepointerisconverted?(3个答案)关闭6年前。我想了解“this”指针。我认为“this”指针指的是类对象的值。但是,在下面的代码中,我可以看到“this”指针的不同值:#includeclassInterfaceA{public:virtualvoidfuna()=0;};classInterfaceB{public:virtualvoidfunb()=0;};voidglobala(InterfaceA*obj){printf("globalA:pointer:%p\n

一文了解this指针的奥秘

对于学习C++的朋友,那么this指针一定不会陌生,但它的真正奥秘可能并不为人所知。1.什么是this指针?首先,让我们从基础开始。在C++中,this指针是一个隐含的指针,它指向当前对象的地址。在类的成员函数中,this指针被用来引用调用该函数的对象。这意味着,当你在类的成员函数中使用变量或调用其他成员函数时,实际上是通过this指针来访问的。classMyClass{public:voidprintAddress(){std::cout在上面的例子中,printAddress函数通过this指针输出了当前对象的地址。这为我们提供了一种在成员函数中访问对象自身的方式。2.this指针的本质为

c++ - 使用指向在结构内声明的字段的指针(又名 CONTAINING_RECORD 宏)计算指向整个结构的指针的可移植方法

例如,在Winnt.h中定义了众所周知的CONTAINING_RECORD()宏:#defineCONTAINING_RECORD(address,type,field)((type*)(\(PCHAR)(address)-\(ULONG_PTR)(&((type*)0)->field)))或在FreeBSD中:#defineCONTAINING_RECORD(addr,type,field)\((type*)((vm_offset_t)(addr)-(vm_offset_t)(&((type*)0)->field)))或在Linux中:#defineoffsetof(TYPE,MEM