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