嗨其他程序员,我一直在尝试调试几天以下程序(下面的代码)。我对C ++课程相对较新,函数" comparar"显然是产生了一堆我不理解的错误,因为编译器没有提供足够的信息。错误显然是语法上的,但一直试图修复功能"比较"并没有任何成功。为什么我的程序产生这样的错误的任何帮助将不胜感激,所以我可以继续调试它。
我的代码:
#include <iostream>
#include <fstream>
using namespace std;
ofstream archivo_out("salida.txt");
class tiempo{
public:
int hora, minuto, segundos;
void entrada();
void set(int new_hora, int new_minuto, int new_segundos);
void comparar (int hora, int minuto, int segundos);
private:
void verificar();
};
int main()
{
tiempo Digital, Digital2;
Digital.set(0, 0, 0);
Digital2.set(0, 0, 0);
Digital.entrada();
Digital2.entrada();
Digital.comparar(int hora, int minuto, int segundos);
Digital2.comparar(int hora, int minuto, int segundos);
return 0;
}
void tiempo::comparar (int Digital.hora, int Digital.minuto, int Digital.segundos, int Digital2.hora, int Digital2.minuto, int Digital2.segundos) {
if ((int Digital.hora == int Digital2.hora) && (int Digital.minuto == int Digital2.minuto) && (int Digital.segundos == int Digital2.segundos))
{
cout << "Ambos horarios son iguales" << endl;
}
else if ((int Digital.hora > int Digital2.hora))
{
cout << Digital.hora << Digital.minuto << Digital.segundos << "es mayor que:" << Digital2.hora << Digital2.minuto << Digital2.segundos;
}
else if ((int Digital2.hora > int Digital.hora))
{
cout << Digital2.hora << Digital2.minuto << Digital2.segundos << "es mayor que:" << Digital.hora << Digital.minuto << Digital.segundos;
}
else if ((int Digital.hora == int Digital2.hora) && (int Digital.minuto > int Digital2.minuto))
{
cout << Digital.hora << Digital.minuto << Digital.segundos << "es mayor que:" << Digital2.hora << Digital2.minuto << Digital2.segundos;
}
else if ((int Digital.hora == int Digital2.hora) && (int Digital.minuto < int Digital2.minuto))
{
cout << Digital2.hora << Digital2.minuto << Digital2.segundos << "es mayor que:" << Digital.hora << Digital.minuto << Digital.segundos;
}
else if ((int Digital.hora == int Digital2.hora) && (int Digital.minuto == int Digital2.minuto) && (Digital.segundos > Digital2.segundos))
{
cout << Digital.hora << Digital.minuto << Digital.segundos << "es mayor que:" << Digital2.hora << Digital2.minuto << Digital2.segundos;
}
else
cout << Digital2.hora << Digital2.minuto << Digital2.segundos << "es mayor que:" << Digital.hora << Digital.minuto << Digital.segundos;
}
void tiempo::entrada() {
cout << "Introduzca la hora seguida por minutos, seguida por segundos: \n";
archivo_out << "Introduzca la hora seguida por minutos, seguida por segundos: \n";
cin >> hora >> minuto >> segundos;
verificar();
}
void tiempo::set(int new_hora, int new_minuto, int new_segundos){
hora = new_hora;
minuto = new_minuto;
segundos = new_segundos;
verificar();
}
void tiempo::verificar() {
if ((hora > 23) || (minuto > 59) || (segundos > 59))
{
cout << "Valor illegal, terminando programa.\n";
archivo_out << "Valor inlegal, terminando programa.\n";
exit(1);
}
}
错误: 用户/ carlosmalave / Desktop / COMP3110 / asig4 / reloj.cpp:25:26:错误:预期&#39;(&#39;用于功能式演员或类型构造 Digital.comparar(int hora,int minuto,int segundos); // Problema con esto,没有entiendo错误 ~~~ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:25:36:错误:预期&#39;(&#39;用于功能式演员或类型构造 Digital.comparar(int hora,int minuto,int segundos); // Problema con esto,没有entiendo错误 ~~~ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:25:48:错误:预期&#39;(&#39;用于功能式演员或类型构造 Digital.comparar(int hora,int minuto,int segundos); // Problema con esto,没有entiendo错误 ~~~ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:26:27:错误:预期&#39;(&#39;用于功能式演员或类型构造 Digital2.comparar(int hora,int minuto,int segundos); // Problema con esto,没有entiendo错误 ~~~ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:26:37:错误:预期&#39;(&#39;用于功能式演员或类型构造 Digital2.comparar(int hora,int minuto,int segundos); // Problema con esto,没有entiendo错误 ~~~ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:26:49:错误:预期&#39;(&#39;用于功能式演员或类型构造 Digital2.comparar(int hora,int minuto,int segundos); // Problema con esto,没有entiendo错误 ~~~ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:30:35:错误:预期&#39;)&#39; void tiempo :: comparar(int Digital.hora,int Digital.minuto,int Digital.segundos,int Digital2.hora,int Digital2.minuto,int Digital2.segundos){ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:30:23:注意:要匹配这个&#39;(&#39; void tiempo :: comparar(int Digital.hora,int Digital.minuto,int Digital.segundos,int Digital2.hora,int Digital2.minuto,int Digital2.segundos){ ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:30:14:错误:&#39; comparar&#39;的外线定义不符合&#39; tiempo&#39;中的任何声明 void tiempo :: comparar(int Digital.hora,int Digital.minuto,int Digital.segundos,int Digital2.hora,int Digital2.minuto,int Digital2.segundos){ ^ ~~~~~~~ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:31:12:错误:预期&#39;)&#39; if((int Digital.hora == int Digital2.hora)&amp;&amp;(int Digital.minuto == int Digital2.minuto)&amp;&amp;(int Digital.segundos == int Digital2.segundos)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:31:7:注意:要匹配这个&#39;(&#39; if((int Digital.hora == int Digital2.hora)&amp;&amp;(int Digital.minuto == int Digital2.minuto)&amp;&amp;(int Digital.segundos == int Digital2.segundos)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:31:50:错误:预期标识符 if((int Digital.hora == int Digital2.hora)&amp;&amp;(int Digital.minuto == int Digital2.minuto)&amp;&amp;(int Digital.segundos == int Digital2.segundos)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:35:17:错误:预期&#39;)&#39; else if((int Digital.hora&gt; int Digital2.hora)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:35:12:注意:要匹配这个&#39;(&#39; else if((int Digital.hora&gt; int Digital2.hora)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:35:50:错误:预期的表达 else if((int Digital.hora&gt; int Digital2.hora)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:37:20:错误:成员参考基础类型&#39; int&#39;不是结构或联盟 cout&lt;&lt; Digital.hora&lt;&lt; Digital.minuto&lt;&lt; Digital.segundos&lt;&lt; &#34; es mayor que:&#34; &LT;&LT; Digital2.hora&lt;&lt; Digital2.minuto&lt;&lt; Digital2.segundos; ~~~~~~~ ^ ~~~~ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:37:36:错误:成员参考基础类型&#39; int&#39;不是结构或联盟 cout&lt;&lt; Digital.hora&lt;&lt; Digital.minuto&lt;&lt; Digital.segundos&lt;&lt; &#34; es mayor que:&#34; &LT;&LT; Digital2.hora&lt;&lt; Digital2.minuto&lt;&lt; Digital2.segundos; ~~~~~~~ ^ ~~~~~~ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:37:54:错误:成员参考基础类型&#39; int&#39;不是结构或联盟 cout&lt;&lt; Digital.hora&lt;&lt; Digital.minuto&lt;&lt; Digital.segundos&lt;&lt; &#34; es mayor que:&#34; &LT;&LT; Digital2.hora&lt;&lt; Digital2.minuto&lt;&lt; Digital2.segundos; ~~~~~~~ ^ ~~~~~~~~ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:37:86:错误:使用未声明的标识符&#39; Digital2&#39; cout&lt;&lt; Digital.hora&lt;&lt; Digital.minuto&lt;&lt; Digital.segundos&lt;&lt; &#34; es mayor que:&#34; &LT;&LT; Digital2.hora&lt;&lt; Digital2.minuto&lt;&lt; Digital2.segundos; ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:37:103:错误:使用未声明的标识符&#39; Digital2&#39; cout&lt;&lt; Digital.hora&lt;&lt; Digital.minuto&lt;&lt; Digital.segundos&lt;&lt; &#34; es mayor que:&#34; &LT;&LT; Digital2.hora&lt;&lt; Digital2.minuto&lt;&lt; Digital2.segundos; ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:37:122:错误:使用未声明的标识符&#39; Digital2&#39; cout&lt;&lt; Digital.hora&lt;&lt; Digital.minuto&lt;&lt; Digital.segundos&lt;&lt; &#34; es mayor que:&#34; &LT;&LT; Digital2.hora&lt;&lt; Digital2.minuto&lt;&lt; Digital2.segundos; ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:39:17:错误:预期&#39;)&#39; else if((int Digital2.hora&gt; int Digital.hora)) ^ /Users/carlosmalave/Desktop/COMP3110/asig4/reloj.cpp:39:12:注意:要匹配这个&#39;(&#39; else if((int Digital2.hora&gt; int Digital.hora))
答案 0 :(得分:2)
首先,在main()
中,您尝试使用
Digital.comparar(int hora, int minuto, int segundos);
这是不正确的。您无需指定类型。所以电话应该是
Digital.comparar(hora, minuto, segundos);
其中hora
,minuto
和segundos
作为参数传递,必须先前定义。
代码中存在类似的错误。一个很好的资源:
The Definitive C++ Book Guide and List
另外,在学习的时候,从小做起。确保小程序成功编译,然后继续。你的方式太大而且有很多错误,太多了,无法在这里列举。