C++程序错误集锦,如:thiscall,_tmain已经定义,重载,未定义的标识符

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是类外定义的变量,则同上;如果在类中明明定义了,还出现上面的错误,则是不是在使用的函数前没有加类作用域运算符,即(类名::)。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值