草庐IT

this-reference

全部标签

c++ - "undefined reference"到从静态方法访问的模板类的静态成员

我有一个静态类方法需要访问一个指针MyTypePointer,因此必须将其声明为静态。因为它是一个模板类,所以我必须将方法放在头文件中,但我不能在头文件中定义MyTypePointer。因此,由于未声明MyTypePointer,我得到了“undefinedReference”错误。我怎样才能使这项工作/声明MyTypePointer。myclass.htemplateclassPathfindingClass{typedefstd::vector*>MyType;staticMyType*MyTypePointer;};templatevoidMyClass::MyMethod(in

C++ "was not declared in this scope"编译错误

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]

c++ - 在基本构造函数完成之前传递 `this` : UB or just dangerous?

考虑这个最小的例子(我能想到的):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&)会怎么样?我必须传递

C++ 对象 : When should I use pointer or reference

我可以使用一个对象作为指向它的指针,或者它的引用。我知道不同之处在于必须手动删除指针,而引用会一直保留到超出范围为止。我应该什么时候使用它们?实际区别是什么?这两个问题都没有回答我的疑惑:Pointervs.ReferenceC++differencebetweenreference,objectsandpointers 最佳答案 引用基本上是一个有限制的指针(必须在创建时绑定(bind),不能反弹/为空)。如果您的代码使用这些限制是有意义的,那么使用引用而不是指针允许编译器警告您意外违反它们。它很像const限定符:没有它语言也可

c++ - 捕获 const this

现在我有一个带有lambda的对象函数,为了使用我必须的成员函数和变量(或者当然捕获所有......):voidMyClass::MyFunc(){automyLambda=[this](){...};}有没有办法明确声明捕获constthis?我知道我可以:voidMyClass::MyFunc(){MyClassconst*const_my_class=this;automyLambda=[const_my_class](){...};}谢谢。 最佳答案 根据标准(N3485)中的§5.1.2,lambda-capture的定义

c++ - "this"指针在堆栈跟踪中损坏

我看过this线。我的情况略有不同,我正在努力弄清楚“this”指针是如何损坏的。我正在使用Qt4.6.2框架,将他们的QTreeView与我自己的模型一起使用。我得到的回溯(86帧长,有很多递归,这就是为什么我没有粘贴整个东西,它在这个pastebin中只涉及他们的代码。它最终在QBasicAtomicInt::deref中的某些汇编器上出现段错误,但很明显它已经进一步消失,这三个框架证明了这一点:#150x01420fd3inQFrame::event(this=0x942bba0,e=0xbf8eb624)atwidgets/qframe.cpp:557#160x014bb382

c++ - 对 `mysql_init' 的 undefined reference

我正在尝试在我的新服务器上编译我的程序,但它目前对我不起作用。错误日志是:rasmus@web01:~/c++$maketestg++`mysql_config--cflags--libs`main.cpplogger.cppcpulogger.cpp-otest/tmp/ccPaMZUy.o:Infunction`CPULogger':/home/rasmus/c++/cpulogger.cpp:7:undefinedreferenceto`mysql_init'/home/rasmus/c++/cpulogger.cpp:8:undefinedreferenceto`mysql_r

c++ - 对运算符<< 的 undefined reference

我有一个常规类(不是模板)和一个私有(private)friend操作符它的声明是:std::ostream&operator在cpp文件中它的定义是:std::ostream&operator它正在被编译然后链接到使用它的主函数,但是当我使用它时我得到一个undefinedreference...然而,当我将定义添加到主cpp文件的顶部并删除友元声明时,它工作正常...这是我在主要功能中使用它的方式std::coutgetPosition()不多也不少...这是链接器错误/home/luke/Desktop/pathfinder/parse_world.cpp:34:undefine

c++ - std::function 与原始函数指针和 void* this 相比的性能?

库代码: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++ - this->field 和 Class::field 之间的区别?

我想知道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