Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1

    [c++] newbbio... problemi prima classe!!!

    ciao a tutti... sono alla mia prima compilazione di c++ e devo dire che come immaginavo non mi va! Arrivo dal java, quindi ho idea di cosa è una classe, ma qui proprio non capisco come farla funzionare. Ho installato Dev-c++ 5 (l'ultimo)
    Che cosa non va nel codice? Ho creato un file chiamato ProvaMath.h così composto:
    codice:
    /* classe ProvaMath */
    
    class ProvaMath(){
     public:
      int somma(int a, int b); 
      int sottrazione(int a, int b);    
    }
    ed un file ProvaMath.cpp:
    codice:
    #include <iostream.h>
    include "ProvaMath.h"
    
    int ProvaMath::somma(int a, int b){
     int c;
     c=a+b;
     return c;
    }
    int ProvaMath::sottrazione(int a, int b){
     int c;
     c=a-b;
     return c;
    }
    
    main(){	
     int a;
     int b;
     int c;
     ProvaMath* provaMath;
     provaMath=new ProvaMath();
     cout << "Inserisci un numero intero";
     cin >> a;
     cout << "inserisci un'altro numero intero" ;
     cin >> b;
     cout << "la loro somma è: " << provaMath->somma(a,b) << endl;
     cout << "la loro differenza è: " << provaMath->sottrazione(a,b) << endl;
     
     //return(0);
    }
    Mi da molti errori... dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    La classe e'


    class ProvaMath
    {
    public:
    int somma(int a, int b);
    int sottrazione(int a, int b);
    };

  3. #3
    Questo è il log di compliazione:

    Compilatore: Default compiler
    Esecuzione di g++.exe...
    g++.exe "D:\progetti c++\ProvaMath.cpp" -o "D:\progetti c++\ProvaMath.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
    In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
    from D:\progetti c++\ProvaMath.cpp:1:
    C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

    D:\progetti c++\ProvaMath.cpp:4: error: expected constructor, destructor, or type conversion before string constant

    D:\progetti c++\ProvaMath.cpp:4: error: expected `,' or `;' before string constant

    D:\progetti c++\ProvaMath.cpp:9: error: `ProvaMath' has not been declared

    D:\progetti c++\ProvaMath.cpp: In function `int main()':
    D:\progetti c++\ProvaMath.cpp:18: error: `ProvaMath' undeclared (first use this function)

    D:\progetti c++\ProvaMath.cpp:18: error: (Each undeclared identifier is reported only once for each function it appears in.)

    D:\progetti c++\ProvaMath.cpp:18: error: `provaMath' undeclared (first use this function)

    D:\progetti c++\ProvaMath.cpp:19: error: `ProvaMath' has not been declared

    Esecuzione terminata

  4. #4
    si quello me ne ero accorto... DEV-c++ non sottolinea gli errori, mentre eclipse qualcosa fa e quello me lo ha beccato... me ne rimangono ancora cmq...

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Veramente, messa a posto la classe, non ho altri errori (con VC6) ...

    Qual e' il codice *attuale* che stai provando ?

  6. #6
    codice:
    #include <iostream.h>
    #include "ProvaMath.h"
    int ProvaMath::somma(int a, int b){
     int c;
     c=a+b;
     return c;
    }
    int ProvaMath::sottrazione(int a, int b){
     int c;
     c=a-b;
     return c;
    }
    
    main(){	
     int a;
     int b;
     ProvaMath* provaMath;
     provaMath=new ProvaMath();
     cout << "Inserisci un numero intero";
     cin >> a;
     cout << "inserisci un'altro numero intero" ;
     cin >> b;
     cout << "la loro somma è: " << provaMath->somma(a,b) << endl;
     cout << "la loro differenza è: " << provaMath->sottrazione(a,b) << endl;
     
     //return(0);
    }

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Dato che non ritorni valore, scrivi

    void main(){

    per il resto, se la dichiarazione della classe e' scritta come ti ho mostrato, non dovrebbero esserci problemi.

  8. #8
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    prova a usare il define...

    nel file ProvaMath.h scrivi questo:

    #ifndef PROVAMATH_H
    #define PROVAMATH_H

    class ProvaMath
    {
    public:
    int somma(int a, int b);
    int sottrazione(int a, int b);
    };

    #endif

    in ProvaMath.cpp

    #include <iostream.h>
    include "ProvaMath.h"

    int ProvaMath::somma(int a, int b){
    int c;
    c=a+b;
    return c;
    }
    int ProvaMath::sottrazione(int a, int b){
    int c;
    c=a-b;
    return c;
    }

    poi crei un altro file che contiene il main.

    #include <iostream.h>
    include "ProvaMath.h"

    main(){
    int a;
    int b;
    int c;
    ProvaMath* provaMath;
    provaMath=new ProvaMath();
    cout << "Inserisci un numero intero";
    cin >> a;
    cout << "inserisci un'altro numero intero" ;
    cin >> b;
    cout << "la loro somma è: " << provaMath->somma(a,b) << endl;
    cout << "la loro differenza è: " << provaMath->sottrazione(a,b) << endl;

    system("pause");
    return(0);
    }

    tutti i file devono essere nella stessa directory di lavoro,
    poi vai in opzioni di compilazione e aggiungi questo al compilatore

    -Wno-deprecated
    I got the remedy

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    423
    Ma hai messo il punto è virgola dopo la definizione della classe ?

  10. #10
    Ho semplificato un po... ma ancora nulla.

    ProvaMath.h
    codice:
    /* classe ProvaMath */
    class ProvaMath{
     public:
      int somma(int a, int b);
      int sottrazione(int a, int b);
    }
    ProvaMath.cpp
    codice:
    #include <iostream.h>
    #include "ProvaMath.h"
    int ProvaMath::somma(int a, int b){
     return(a+b);
    }
    int ProvaMath::sottrazione(int a, int b){
     return(a-b);
    }
    main(){	
     int c;
     int d;
     ProvaMath* provaMath;
     provaMath=new ProvaMath();
     cout << "Inserisci un numero intero";
     cin >> c;
     cout << "inserisci un'altro numero intero" ;
     cin >> d;
     cout << "la loro somma è: " << provaMath->somma(c,d) << endl;
     cout << "la loro differenza è: " << provaMath->sottrazione(c,d) << endl;
     return(0);
    }
    Log di compilazione:
    Compilatore: Default compiler
    Esecuzione di g++.exe...
    g++.exe "D:\progetti c++\ProvaMath.cpp" -o "D:\progetti c++\ProvaMath.exe" -I"C:\Dev-Cpp\lib\gcc\mingw32\3.4.2\include" -I"C:\Dev-Cpp\include\c++\3.4.2\backward" -I"C:\Dev-Cpp\include\c++\3.4.2\mingw32" -I"C:\Dev-Cpp\include\c++\3.4.2" -I"C:\Dev-Cpp\include" -L"C:\Dev-Cpp\lib"
    In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31,
    from D:\progetti c++\ProvaMath.cpp:1:
    C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated.

    D:\progetti c++\ProvaMath.cpp:3: error: new types may not be defined in a return type

    D:\progetti c++\ProvaMath.cpp:3: error: extraneous `int' ignored

    D:\progetti c++\ProvaMath.cpp:3: error: prototype for `ProvaMath ProvaMath::somma(int, int)' does not match any in class `ProvaMath'

    D:\progetti c++\/ProvaMath.h:5: error: candidate is: int ProvaMath::somma(int, int)

    D:\progetti c++\ProvaMath.cpp:3: error: `ProvaMath ProvaMath::somma(int, int)' and `int ProvaMath::somma(int, int)' cannot be overloaded

    D:\progetti c++\ProvaMath.cpp: In member function `ProvaMath ProvaMath::somma(int, int)':
    D:\progetti c++\ProvaMath.cpp:4: error: conversion from `int' to non-scalar type `ProvaMath' requested

    Esecuzione terminata


    Può essere che il compilatore non funzioni bene?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.