草庐IT

xor_this

全部标签

c++继承私有(private)复制构造函数: how doesn't this yield a compile time error?

在C++中,如果我们有这个类classUncopyable{public:Uncopyable(){}~Uncopyable(){}private:Uncopyable(constUncopyable&);Uncopyable&operator=(constUncopyable&);};然后我们有一个派生类classDervied:privateUncopyable{};我的问题是:当编译器在派生类中生成默认的复制构造函数和赋值运算符时,为什么这不会生成编译时错误?生成的代码不会尝试访问基类私有(private)成员吗? 最佳答案

c++ - 为什么 sizeof(this - id) 返回 8?

我的代码中有一个非常愚蠢的拼写错误...is.read((char*)&this->id,sizeof(this-id));在this-之后缺少>字符有趣的是sizeof(this-id)返回了8!我的想法是...因为this是一个指针,对this做减法将导致另一个指针被id的值关闭,它可以是任何东西取决于id的值。还有...在64位系统上,指针通常是8个字节!我说的对吗?还是遗漏了什么?下面是我的类(class)。classIndexItem:publicSerializable{public:IndexItem(uint32_tid,std::streampospos):id(id

C++ 函数名称分解 : What does this name suffix mean?

当我反汇编Chromium二进制文件时,我注意到有一些函数以这种模式命名:_ZN6webrtc15DecoderDatabase11DecoderInfoD2Ev.part.1如果我把这个字符串给c++filt,输出是webrtc::DecoderDatabase::DecoderInfo::~DecoderInfo()[克隆.part.1]那么这个.part.1后缀的真正含义是什么?如果它表明同一个函数有多个拷贝,他们为什么需要那个?是因为位置独立的要求吗?我使用g++作为编译器。 最佳答案 它表示析构函数是partialinli

c++ - Lambda 的 "this"捕获返回垃圾

我正在实现我自己的类,该类提供其成员的惰性初始化。而且我遇到了在lambda中捕获this的奇怪行为。这是一个重现此错误的示例。//Baz.h#include#include#include"Lazy.hpp"structFoo{std::stringstr;Foo()=default;Foo(std::stringstr):str(str){}Foo(Foo&&that):str(that.str){}};classBaz{std::stringstr;Lazy>foo;public:Baz()=default;Baz(conststd::string&str):str(str){/

c++ - 从自身内部替换 std::function(通过 move 赋值到 *this?)

是否可以用另一个std::function替换一个std::function?以下代码无法编译:#include#includeintmain(){std::functionfunc=[](){std::cout可以修改编译吗?现在的错误消息是:'this'wasnotcapturedforthislambdafunction-我完全理解。但是,我不知道如何捕获func的this指针。我想,它甚至不是lambda中的std::function吧?!如何做到这一点?背景:我想要实现的是:在给定std::function的第一次调用中,我想做一些初始化工作然后替换具有优化功能的原始功能。我

c++ - 将从唯一指针移动到共享指针也会初始化 enable_shared_from_this

当我继承std::enable_shared_from_this,但是我创建了一个unique_ptr,std::enable_shared_from_this里面的weak_ptr也会被初始化吗当我通过std::move或移动构造函数“移动”到shared_ptr时?例如下面的代码会发生什么:#include#includeclassA:publicstd::enable_shared_from_this{public:std::shared_ptrgetA(){returnshared_from_this();}};intmain(){std::unique_ptru(newA()

c++ - std::reference_wrapper *this 周围

我有一个场景,我需要转换一个可以被*this链接的函数返回std::optional>而不是T&(原因超出了这个问题的范围)。我使用std::reference_wrapper的原因是因为std::optional不能引用,至少在C++11中不能。但是,这不起作用,因为我似乎遇到了终身问题。这是一个最小的例子:#include#includestructtest{std::reference_wrapperfoo(){val=42;return*this;}test&foo2(){val=50;return*this;}intval;};voidbar(testt){std::cout

c++ - 如何以及何时正确使用 *this 指针和参数匹配?

当我浏览同事编写的代码时,在某些地方,他们使用:this->doSomething();//-->caseAdoSomething();//-->caseB事实上我不确定*this指针的用途...:(另一个参数匹配问题:obj.doOperation();//-->caseC(&obj)->doOperation();//-->caseD其实这两种情况都在执行想要的操作,难道只是一种让代码看起来更复杂的方法吗?您对以上两个问题有何建议?什么时候使用它们比较合适?为什么? 最佳答案 这不是您问题的答案,而是说明两个片段可能做不同的事情

c++ - "Function not declared in this scope"编译openCV代码出错

我正在尝试编写一些使用openCV函数的代码。我从文档中提供的一些示例代码开始:#include#include#includeusingnamespacecv;usingnamespacestd;intmain(intargc,char**argv){if(argc!=2){cout当我尝试在Eclipse-CDT中构建它时,我得到了这个:****BuildofconfigurationDebugforprojectopenCV1****makeallBuildingtarget:openCV1Invoking:CrossG++Linkerg++-L/usr/local/lib-o"

c++ - 是否可以将 bind() *this 绑定(bind)到类成员函数以回调 C API

有没有办法使用boost或stdbind()以便我可以在CAPI中使用结果作为回调?这是我使用的示例代码:#include#includetypedefvoid(*CallbackType)();voidCStyleFunction(CallbackTypefunctionPointer){functionPointer();}classClass_w_callback{public:Class_w_callback(){//ThiswouldnotworkCStyleFunction(boost::bind(&Class_w_callback::Callback,this));}vo