这个问题在这里已经有了答案:关闭12年前。PossibleDuplicates:Why‘this’isapointerandnotareference?SAFEPointertoapointer(wellreferencetoareference)inC#C++中的this关键字获取指向我当前所在对象的指针。我的问题是为什么this的类型是指针类型而不是引用类型。this关键字是否为NULL?我的直接想法是在静态函数中,但至少VisualC++足够聪明,可以发现这一点并报告静态成员函数没有“this”指针。这在标准中吗?
C++新手。在我编写的以下程序中出现此错误:g++-oBlobblob.ccblob.cc:Infunction'intnonrecursivecountcells(color(*)[7],int,int)':blob.cc:41:error:'grid'wasnotdeclaredinthisscope代码如下:#includeenumcolor{BACKGROUND,ABNORMAL,TEMPORARY};constintROW_SIZE=7;constintCOL_SIZE=7;intnonrecursivecountcells(color[ROW_SIZE][COL_SIZE]
考虑这个最小的例子(我能想到的):structBar;structFoo{Bar*constb;Foo(Bar*b):b(b){}};structBar{Foo*constf;Bar(Foo*f):f(f){}};structBaz:Bar{Baz():Bar(newFoo(this)){}};当将this传递给Foo的构造函数时,Baz的层次结构中没有任何内容被创建,但Foo和Bar对它们接收到的指针做任何有问题的事情。现在的问题是,以这种方式泄露this是危险的还是未定义的行为?问题2:如果Foo::Foo(Bar*)是具有相同语义的Foo::Foo(Bar&)会怎么样?我必须传递
现在我有一个带有lambda的对象函数,为了使用我必须的成员函数和变量(或者当然捕获所有......):voidMyClass::MyFunc(){automyLambda=[this](){...};}有没有办法明确声明捕获constthis?我知道我可以:voidMyClass::MyFunc(){MyClassconst*const_my_class=this;automyLambda=[const_my_class](){...};}谢谢。 最佳答案 根据标准(N3485)中的§5.1.2,lambda-capture的定义
我看过this线。我的情况略有不同,我正在努力弄清楚“this”指针是如何损坏的。我正在使用Qt4.6.2框架,将他们的QTreeView与我自己的模型一起使用。我得到的回溯(86帧长,有很多递归,这就是为什么我没有粘贴整个东西,它在这个pastebin中只涉及他们的代码。它最终在QBasicAtomicInt::deref中的某些汇编器上出现段错误,但很明显它已经进一步消失,这三个框架证明了这一点:#150x01420fd3inQFrame::event(this=0x942bba0,e=0xbf8eb624)atwidgets/qframe.cpp:557#160x014bb382
库代码:classResource{public:typedefvoid(*func_sig)(int,char,double,void*);//RegistrationregisterCallback(void*app_obj,func_sigfunc){_app_obj=app_obj;_func=func;}//Callingwhenthetimecomesvoidcall_app_code(){_func(231,'a',432.4234,app_obj);}//Otherusefulmethodsprivate:void*app_obj;func_sig_func;//Oth
我想知道C++中的一些东西。承认以下代码:intbar;classFoo{public:Foo();private:intbar;};在我的类(class)中,this->bar和Foo::bar之间有什么区别吗?是否存在无效的情况? 最佳答案 在Foo类中(具体来说)两者之间没有区别,因为bar不是static。Foo::bar被称为成员bar的完全限定名,这种形式在层次结构中可能有多个类型定义一个同名成员。例如,您需要在此处编写Foo::bar:classFoo{public:Foo();protected:intbar;};c
我有一个很奇怪的问题。我有一个类/函数:classMCBSystem{[...]templatevoidsetCallBack(inti,Receiver*receiver,void(Receiver::*function)(void*)){iCallBacks.at(i)=newCallBack(receiver,function,this);};};我在另一个类中继承它(相乘):classMenuBox:publicOverlayBox,publicHIDListener,publicFANLib::MCBSystem{[...]};现在,如果我调用“setCallBack”函数:
用this参数调用析构函数中的某个函数是否有效?函数不存储指针,而是假定为全功能对象。 最佳答案 this在析构函数中仍然有效。但是,您需要记住,一旦对象被销毁,虚函数就不再像您预期的那样正常工作;参见例如NeverCallVirtualFunctionsduringConstructionorDestruction.本质上,对象的动态类型随着每个析构函数的完成而被修改。 关于c++-在析构函数中使用"this",我们在StackOverflow上找到一个类似的问题:
在下面的代码片段中,voidfoo(){std::this_thread::native_handle()....//errorhere}intmain(){std::threadt1(foo);t1.join();return0;}如何从函数foo中的std::this_thread获取native_handle? 最佳答案 线程无法自动获得对其自身std::thread的访问权。这是有意为之的,因为std::thread是一种只能移动的类型。我相信您要求的是std::thread::id的native_handle()成员,这是