c++各种错误归纳
1.error: invalid use of incomplete type 'QScrollBar'
解决方法.h 文件添加:#include<QScrollBar>
2.error: cannot call member function without object
解决方法:找到.h文件,在方法前加上static修饰
3.g++编译报错原因分析expected type-specifier before
原因:因为没有引入相应的头文件,加入相应的.h可以解决
4.error: conversion from ‘std::__cxx11::list<rcsc::PlayerObject>::const_iterator
{aka std::_List_const_iterator<rcsc::PlayerObject>}’
to non-scalar type ‘std::vector<rcsc::PlayerObject*>::const_iterator {aka __gnu_cxx::__normal_iterator<rcsc::PlayerObject* const*, std::vector<rcsc::PlayerObject*> >}’ requested
原因:迭代类型返回的对象不一致,如:t = wm.teammates.begin()应该换成 t = wm.teammatesFromBall().begin()
5.warning: ‘' [-Wreorder]
产生这种问题是类成员初始化顺序不对,调整顺序即可;
6.error:[Error] '' was not declared in this scope
原因:因为没有引入相应的头文件,加入相应的.h可以解决
或者函数定义没有放在使用此函数的前面,调整位置或者在使用此函数前面加上申明即可。
7.error: make: *** No rule to make target `../1.c', needed by `1.o'.
办法找到1.c文件,1.o文件需要1.c文件来生成,应该是1.c文件的配置路径写错了,修改一下
路径就可以了。
8.error: reference to ‘FieldAnalyzer’ is ambiguous
加上命名空间前缀就好了
9.error:invalid new-expression of abstract class type
原因:对抽象类进行了new操作,或派生类中未完全实现基类中定义的纯虚函数。
解决方法:一般编译器会检查并提示基类中的哪些纯虚函数未实现,按提示将纯虚函数实现即可。
10.error undefined reference to "class::方法"
文件中存在某方法的声明,但没有它对应的实现
11.使用GCC编译后出现下列可怕的问题:
hello.o: In function `main':
hello.cpp:(.text+0x41): undefined reference to `std::cin'
hello.cpp:(.text+0xd1): undefined reference to `std::cout'
......
解决方法:
(1)gcc和g++都是GNU(组织)的一个编译器。
(2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。
(3)对于.cpp的程序,编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。(个人觉得这条是最重要的)