什么可能导致'句法'类中函数内的错误?

时间:2015-10-05 23:05:20

标签: c++ class

嗨其他程序员,我一直在尝试调试几天以下程序(下面的代码)。我对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))

1 个答案:

答案 0 :(得分:2)

首先,在main()中,您尝试使用

调用成员函数
Digital.comparar(int hora, int minuto, int segundos);

这是不正确的。您无需指定类型。所以电话应该是

Digital.comparar(hora, minuto, segundos);

其中horaminutosegundos作为参数传递,必须先前定义。

代码中存在类似的错误。一个很好的资源:

The Definitive C++ Book Guide and List

另外,在学习的时候,从小做起。确保小程序成功编译,然后继续。你的方式太大而且有很多错误,太多了,无法在这里列举。