C++程序错误集锦,如:thiscall,_tmain已经定义,重载,未定义的标识符
2016-05-20 19:18
281 查看
C++程序错误:
1.
程序运行,遇见一堆这样的错误,此时并不要头大,仔细看你能看懂的部分。
1)public: __thiscall,表示这个调用函数;
2)Doctor::Doctor(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,char,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,double)" ,虽然一长串,但是作用域双冒号前是类名,后面是构造函数的名字,括号中的长串是传递的参数;
3)最后看到“ 已经在 clinic.obj 中定义”!!!
这个错误就是说Doctor这个构造函数可能定义了两次。仔细检查你的程序看函数有没有定义两次的。
如果,真的检查了程序真的没有两次定义的函数,不要奇怪,我就遇到了这个问题。一个学生把类的定义和构造函数(构造函数写在类外)的实现写在了.h头文件中,把别的函数实现写在了另一个.cpp文件中。在这个cpp文件中引入了头文件。此时就出现了这个错误。如果想把类的定义和实现写在两个文件中,应把类的定义写在.h头文件中,实现全部写在另一个.cpp文件中(一定是全部哦!包括构造函数的实现和普通函数的实现,当然也可以把一些函数实现写在类定义里面叫inline函数,即内联函数,或者在头文件.h中但是函数实现在类外,这时必须用inline声明为内联函数!即出现在头文件中的函数实现必须是内联函数inline,要不就会出现上述错误)。
2.
这个同上面那个类似,又出现了一堆看不懂的错误!不要急,还是那个原则看你能看懂的部分!public: void __thiscall ,即这个调用函数;Doctor::show(void)",该符号在函数 Billing::showData(void)" 中被引用。我遇到的情况是只是声明了Doctor::show(void)函数,但没有函数定义,但在 Billing::showData(void)调用。
解决方法:仔细查看有没有错误中提到的函数没有声明,或者没有定义。
3.
这个就简单了,查看你的项目中有没有定义多个main函数。
4.
仔细查看程序是不是错误中提示的函数重载不正确。
遇到的问题:函数并没有重载,为什么还是提示这个错误呢?
大家有没有看出问题呢?函数声明时可以有默认参数列表,但是在实现的时候要把参数赋值删掉哦!如下图
5.
此时原则也是看能看懂的部分,“没有与参数列表匹配的重载函数、getline”,双击错误会定位到调用getline函数的地方,这个错误原因就是函数参数不匹配。上网查一下该函数正确的参数类型,再看看自己调用函数时传进去的参数类型对不对。
6.
这个错误分两种情况:
(1)程序中没有定义类,这时检查a真的有没有定义,有定义的话,注意局部变量的作用域,是不是在变量的作用域外使用该变量;
(2)程序中有类定义,如果变量a是类外定义的变量,则同上;如果在类中明明定义了,还出现上面的错误,则是不是在使用的函数前没有加类作用域运算符,即(类名::)。
1.
程序运行,遇见一堆这样的错误,此时并不要头大,仔细看你能看懂的部分。
1)public: __thiscall,表示这个调用函数;
2)Doctor::Doctor(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,char,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class
std::allocator<char> >,double)" ,虽然一长串,但是作用域双冒号前是类名,后面是构造函数的名字,括号中的长串是传递的参数;
3)最后看到“ 已经在 clinic.obj 中定义”!!!
这个错误就是说Doctor这个构造函数可能定义了两次。仔细检查你的程序看函数有没有定义两次的。
如果,真的检查了程序真的没有两次定义的函数,不要奇怪,我就遇到了这个问题。一个学生把类的定义和构造函数(构造函数写在类外)的实现写在了.h头文件中,把别的函数实现写在了另一个.cpp文件中。在这个cpp文件中引入了头文件。此时就出现了这个错误。如果想把类的定义和实现写在两个文件中,应把类的定义写在.h头文件中,实现全部写在另一个.cpp文件中(一定是全部哦!包括构造函数的实现和普通函数的实现,当然也可以把一些函数实现写在类定义里面叫inline函数,即内联函数,或者在头文件.h中但是函数实现在类外,这时必须用inline声明为内联函数!即出现在头文件中的函数实现必须是内联函数inline,要不就会出现上述错误)。
2.
这个同上面那个类似,又出现了一堆看不懂的错误!不要急,还是那个原则看你能看懂的部分!public: void __thiscall ,即这个调用函数;Doctor::show(void)",该符号在函数 Billing::showData(void)" 中被引用。我遇到的情况是只是声明了Doctor::show(void)函数,但没有函数定义,但在 Billing::showData(void)调用。
解决方法:仔细查看有没有错误中提到的函数没有声明,或者没有定义。
3.
这个就简单了,查看你的项目中有没有定义多个main函数。
4.
仔细查看程序是不是错误中提示的函数重载不正确。
遇到的问题:函数并没有重载,为什么还是提示这个错误呢?
大家有没有看出问题呢?函数声明时可以有默认参数列表,但是在实现的时候要把参数赋值删掉哦!如下图
5.
此时原则也是看能看懂的部分,“没有与参数列表匹配的重载函数、getline”,双击错误会定位到调用getline函数的地方,这个错误原因就是函数参数不匹配。上网查一下该函数正确的参数类型,再看看自己调用函数时传进去的参数类型对不对。
6.
这个错误分两种情况:
(1)程序中没有定义类,这时检查a真的有没有定义,有定义的话,注意局部变量的作用域,是不是在变量的作用域外使用该变量;
(2)程序中有类定义,如果变量a是类外定义的变量,则同上;如果在类中明明定义了,还出现上面的错误,则是不是在使用的函数前没有加类作用域运算符,即(类名::)。
相关文章推荐
- C#执行外部命令的方法
- perl调用外部命令(g)awk的方法
- java执行外部命令
- MS 4000 VCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainC
- Windows 7 下 " 'telnet' 不是内部或外部命令 "
- Linux内建命令和外部命令(整理)
- VS解决方案下各项目的关系要用“添加依赖项”来实现
- Centos 6.5 DNS 文件都配置正确但无法解析的解决办法
- 随记:RHEL6.2下DNS无法解析公网域名troubleshooting
- 内部命令vs外部命令
- 查看命令为内置命令还是外部命令
- 无法解析的OpenCV引入
- RHEL6入门系列之十一,内/外部命令、重定向、管道 推荐
- VS 编译链接错误集锦
- Bind Cache Server无法解析公网域名error (broken trust chain) resolving './NS/IN'
- python调用外部命令
- Linux中 别名、内部命令、外部命令、hash缓存表 系统调用时的优先级比较
- 菜鸟的DUBBO进击之路(八):配置抽离导致${jdbc.url}被当成字符串处理
- C/C++调用约定
- c++模版应用实例