草庐IT

this-reference

全部标签

c++ - C++ 中的 (this != this) 是什么时候?

我有一个很奇怪的问题。我有一个类/函数:classMCBSystem{[...]templatevoidsetCallBack(inti,Receiver*receiver,void(Receiver::*function)(void*)){iCallBacks.at(i)=newCallBack(receiver,function,this);};};我在另一个类中继承它(相乘):classMenuBox:publicOverlayBox,publicHIDListener,publicFANLib::MCBSystem{[...]};现在,如果我调用“setCallBack”函数:

c++ - 获取模板类型的基类型(删除 const/reference/等)

是否有返回给定类型的基本类型的类型特征模板。基本类型是指去除了所有值修饰符、const、volatile等的类型。例如,使用假设的特征函数:base::type==intbase::type==intbase::type==int我知道remove_const和remove_reference并且我目前只是结合使用它们。我想知道是否已经存在这样的特征,也许我所指的是否有合适的名称? 最佳答案 我可能会定义一个类型别名,例如:templateusingbase_type=typenamestd::remove_cv::type>::t

c++ - 在析构函数中使用 "this"

用this参数调用析构函数中的某个函数是否有效?函数不存储指针,而是假定为全功能对象。 最佳答案 this在析构函数中仍然有效。但是,您需要记住,一旦对象被销毁,虚函数就不再像您预期的那样正常工作;参见例如NeverCallVirtualFunctionsduringConstructionorDestruction.本质上,对象的动态类型随着每个析构函数的完成而被修改。 关于c++-在析构函数中使用"this",我们在StackOverflow上找到一个类似的问题:

C++11 'native_handle' 不是 'std::this_thread' 的成员

在下面的代码片段中,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()成员,这是

c++ - 右值 lambda 的 std::reference_wrapper 如何工作?

在thisarticle它说以下代码是有效的C++11并且适用于GNU的libstdc++:intn;std::vectorv;...std::functionf(std::cref([n](inti){returni%n==0));std::count_if(v.begin(),v.end(),f);问题是我始终相信lambda对象是在调用站点创建的,这将使它成为此代码段中的临时对象,因为它没有存储在任何变量中,而是存储在const中。正在创建对它的引用并将其传递给std::function.如果是这样,lambda对象应该一直被销毁,在f中留下悬空引用。,当std::count_i

c++ - 对 `Static Class Member variable inside Static member function' 的 undefined reference

我实际上正在尝试实现分页的模拟,在我的内存管理器中,我尝试创建一个静态页表,但是当我尝试打印它时它给出了引用错误。#ifndefMEMORYMANAGER_H#defineMEMORYMANAGER_H#include"memory.h"classMemoryManager{private:PhysicalMemoryRAM;LogicalMemoryVM;intoffsetValue;staticint**pageTable;public:MemoryManager();booladdProcess(TimeSliceRequest);voidprintVirtualMemory()

c++ - &**this 究竟返回了什么?

这是一个指向调用对象的指针(它返回右值)。*这是一个指向调用对象指针的指针(它返回地址的值)。**这是一个指向调用对象(???)的指针的指针。&***这是对调用对象指针(???)的指针的引用。std::vector::iteratori=vector1.begin();i是指向它自己的右值的指针(返回它自己的值)。*i是vector中包含的对象的右值指针(返回&value中指向的值)。**i是指向vector中包含的对象的右值指针的指针(???)。我真的很困惑。这是一个示例代码,我们在其中找到表达式&**this:class_Iter{private:ListElem*pCurr;co

c++ - std::enable_shared_from_this:是否允许在析构函数中调用 shared_from_this()?

#include#includestructA:publicstd::enable_shared_from_this{~A(){autothis_ptr=shared_from_this();//std::bad_weak_ptrexceptionhere.std::cout();a.reset();return0;}我在调用shared_from_this()时遇到std::bad_weak_ptr异常。是设计使然吗?是的,这可能很危险,因为在析构函数返回后无法使用此指针,但我看不出为什么在技术上不可能在这里获取指针的原因,因为共享指针对象显然仍然存在并且可以用过的。除了编写我自己的

c++ - 在非成员函数中无效使用 'this'

我在上课时开始在同一个.cpp文件中编写所有内容。然而,过了一会儿,我发现这个类越来越大,所以我决定将它分成一个.h和一个.cpp文件。高斯.h文件:classGaussian{private:doublemean;doublestandardDeviation;doublevariance;doubleprecision;doubleprecisionMean;public:Gaussian(double,double);~Gaussian();doublenormalizationConstant(double);GaussianfromPrecisionMean(double,d

微信小程序this.triggerEvent()组件通信

微信小程序this.triggerEvent事件a组件view>bbind:toSumbit="sumbit">/b>/view>Page({data:{},sumbit(e){console.log(e.detail.sumbitInfo)},onLoad(){},onReady(){},onShow(){},onHide(){},onUnload(){},onPullDownRefresh(){},onReachBottom(){},onShareAppMessage(){}})b组件Component({properties:{},data:{sumbitInfo:{},},method