您的位置:首页 > 编程语言 > C语言/C++

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是类外定义的变量,则同上;如果在类中明明定义了,还出现上面的错误,则是不是在使用的函数前没有加类作用域运算符,即(类名::)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息