![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bug
不动心、
这个作者很懒,什么都没留下…
展开
-
reference to non-static member function must be called: 使用成员函数指针时需要注意的问题
leetcode的1356. 根据数字二进制下 1 的数目排序中,在类内部定义了一个compare,然后sort函数中使用了compare指针进行排序,结果出现了错误:reference to non-static member function must be called:这是因为对于非静态函数,都有一个隐含的参数this指针,即compare的声明实际上是bool compare(Solution* this, int a, int b),而sort函数要求compare有两个参数。所以应该将原创 2020-11-06 12:06:37 · 1373 阅读 · 0 评论 -
error: reference to non-static member function must be called
在类中进行排序,使用自定义的compare函数。如果compare函数也是在这个类中定义的,它会有一个隐含的参数this,所以compare是3个参数,而sqrt只传递两个参数,所以会出错。解决方法是把compare定义成static的,因为静态成员函数不属于任何一个对象,所以不包含隐含参数this。...原创 2020-09-25 11:48:30 · 371 阅读 · 0 评论 -
在函数‘_start’中: (.text+0x20):对‘main’未定义的引用
错误信息/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o:在函数‘_start’中:(.text+0x20):对‘main’未定义的引用g++编译器命令写错了,比如应该是:g++ -o hello hello.cpp func.cpp写了-o但是忘记写可执行目标文件名hello,就会出现这个错误。同时hello.cpp文件还会同时消失,辛苦打的字找不回来了,非常心痛。...原创 2020-08-25 11:28:54 · 4193 阅读 · 0 评论 -
C++链接时重复定义
因为在头文件中有#ifndef XXX#define XXX...#endif所以在编译的时候,头文件不会被重复包含,不会出现重定义的问题。但是如果头文件中有函数的定义,那么不同cpp文件都包含这个头文件,在汇编成.o文件后,不同的.o文件中都含有头文件中函数的定义,链接阶段就会出现重定义的问题。如果出现这种错误,找到提示信息中函数所在的头文件,在头文件中保留函数的声明,把函数的实现都删掉,放在一个单独的cpp文件中。头文件中一定要有函数的声明,否则编译器在类型检查的时候看不见函数的名字。原创 2020-08-25 11:26:15 · 1650 阅读 · 0 评论 -
对‘vtable for Bulk_quote’未定义的引用
错误信息:/tmp/ccgS0x7e.o:在函数‘Bulk_quote::Bulk_quote(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, double, unsigned long, double)’中:15.11.cpp:(.text._ZN10Bulk_quoteC2ERKNSt7__cxx1112basic_stringI原创 2020-08-21 20:20:11 · 351 阅读 · 0 评论 -
two or more data types in declaration of
代码...struct Div { int operator ()(int i, int j) const { return i / j; } }auto binops = std::map<std::string, std::function<int(int, int)>>...错误error: two or more data types in declaration of ‘binops’ auto binops = std::map<std::strin原创 2020-08-20 18:16:05 · 954 阅读 · 0 评论 -
warning: reference to local variable ‘ret’ returned [-Wreturn-local-addr]
StrBlobPtr& StrBlobPtr::operator++(int){ StrBlobPtr ret = *this; ++*this; return ret;}函数返回一个引用,而这个引用绑定的是一个局部对象ret,函数体结束后就销毁了,所以出现这个错误。这个函数的返回值不能是引用。...原创 2020-08-19 17:55:28 · 1186 阅读 · 0 评论 -
对‘XXX‘未定义的引用
出现这种情况的原因,主要是C/C++编译为obj文件的时候并不需要函数的具体实现,只要有函数的原型即可。但是在链接为可执行文件的时候就必须要具体的实现了。如果错误是未声明的引用,那就是找不到函数的原型,解决办法这里就不细致说了,通常是相关的头文件未包含。在gcc编译的时候,如果文件a依赖于文件b,那么编译的时候必须把a放前面,b放后面。例如:在main.c中使用了pthread库相关函数,那么编译的时候必须是main.c在前,-lpthread在后。gcc main.c -lpthread -o a.o转载 2020-08-12 20:36:49 · 12108 阅读 · 0 评论 -
error: passing as ‘this‘ argument discards qualifiers [-fpermissive]
出现的原因是类的某个对象使用const修饰,但是程序访问了这个对象的非const成员函数。原创 2020-08-08 17:19:43 · 1352 阅读 · 0 评论 -
对XXXXX未定义的引用 collect2: error: ld returned 1 exit status
使用函数前有声明,但是声明和定义的形参或者返回值并不匹配。原创 2020-07-16 23:50:26 · 1413 阅读 · 1 评论