Errore compilazione[C++]

Gianni911
Ciao a tutti ,qualcuno sa spiegarmi che cosa significa questo errore?? :)



grazie !!

Risposte
hamming_burst
ciao,
noto due parentesi { } di troppo, e poi che sarebbe $G\ z()$, mai visti così tanti possibili errori in due righe :-)

Gianni911
"ham_burst":
ciao,
noto due parentesi { } di troppo, e poi che sarebbe $G\ z()$, mai visti così tanti possibili errori in due righe :-)


Le due parentesi sono per provare il funzionamento di costruttore e distuttore della mia classe(anche a lezione facevamo cosi),quindi non sono errori.
Mentre G z(); corrisponde alla chiamata del costruttore per l'oggetto z,quindi non sono questi gli errori.. ;-)



forse può essere di aiuto..

hamming_burst
"Gianni91":
[quote="ham_burst"]ciao,
noto due parentesi { } di troppo, e poi che sarebbe $G\ z()$, mai visti così tanti possibili errori in due righe :-)


Le due parentesi sono per provare il funzionamento di costruttore e distuttore della mia classe(anche a lezione facevamo cosi),quindi non sono errori.
Mentre G z(); corrisponde alla chiamata del costruttore per l'oggetto z,quindi non sono questi gli errori.. ;-)[/quote]

uuuhhh C++ :oops:
ho guardato con l'occhio del C, sorry :-)

ah anche più senso $G\ z()$...

comunque non conosco sta strutturazione(il C++ lo conosco derivandolo da Java e dal C)... a me pare non usuale mettere due parentesi così, aspetta allora qualcun altro :)

apatriarca
Per prima cosa, le parentesi graffe servono per aprire e chiudere un blocco di istruzioni. Era sinceramente più utile in C che in C++ ed è principalmente usato per restringere l'esistenza di alcune variabili locali. Viene in questo caso usato solo per eseguire il distruttore della classe prima di system("PAUSE").

In realtà il codice non produce alcun errore, ma solo un warning molto strano. A parte la mancanza dell'inclusioni di stdlib per la funzione system, non noto altri errori particolarmente evidenti. Inserisci tutto il codice così possiamo copiarlo (non ho l'intenzione di cercare di riscriverlo - mancherebbe comunque un file).

@ gianni91: incolla il codice invece delle immagini. Cambia IDE.. Ci sono infinite ragioni per farlo e nessuna per rimanere legato a questo sch*fo di programma.
* Ho appena notato che il primo dei due header è incluso in g.h.

apatriarca
Per richiamare il costruttore di default non devi comunque scrivere
G z();

ma semplicemente
G z;

Nota che NON è equivalente. Prova infatti a richiamare la funzione inserisci della classe e dovrebbe dirti che z non è del tipo corretto.

Gianni911
"apatriarca":

@ gianni91: incolla il codice invece delle immagini. Cambia IDE.. Ci sono infinite ragioni per farlo e nessuna per rimanere legato a questo sch*fo di programma.

Lo so che fa schifo ma all'uni usiamo questo,quindi almeno per ora...

"apatriarca":

Nota che NON è equivalente. Prova infatti a richiamare la funzione inserisci della classe e dovrebbe dirti che z non è del tipo corretto.


Facendo come mi hai detto il warnig é scomparso e funziona tutto perfettamente... :smt023
Potresti spiegarmi la differenza tra z() e z??

grazie

apatriarca
G z();

è interpretato come il prototipo di una funzione che restituisce un valore di tipo G chiamata z. Per vederlo puoi provare ad eseguire il seguente codice che ti mostra il suo tipo (confrontato con quello di una funzione vera e propria). Probabilmente questo "problema" è dovuto alla retrocompatibilità con il C.
#include<iostream>
#include<typeinfo>
using namespace std;

class A {
};

A f() {
    return A();
}

int main()
{
    A a;
    A a2();

    cout << "Tipo di a: " << typeid(a).name() << endl;
    cout << "Tipo di a2: " << typeid(a2).name() << endl;
    cout << "Tipo di f: " << typeid(f).name() << endl;

    return 0;
}

L'output dipende molto dal compilatore. Per esempio, uno dei miei compilatori stampa
Tipo di a: 1A
Tipo di a2: F1AvE
Tipo di f: F1AvE

mentre l'altro stampa
Tipo di a: class A
Tipo di a2: class A __cdecl(void)
Tipo di f: class A __cdecl(void)

La cosa importante è che sia a2 che f hanno lo stesso tipo e cioè funzioni che restituiscono un valore di tipo A e che non hanno parametri.

Gianni911
grazie adesso che vado a casa provo.. :smt023
Per la cronaca ,che mi consigli come IDE??? :D

apatriarca
Microsoft Visual C++ 2010 Professional se sei studente come immagino o la sua versione Express gratuita se non lo sei. È il principale IDE professionale per lo sviluppo su Windows. Alternativamente puoi scaricarti Code::Blocks (installa quello con mingw incluso se non vuoi smanettare installando un tuo compilatore differente) che è open-source e potrebbe essere maggiormente compatibile con il codice del tuo professore se usa estensioni di gcc.

Gianni911
Compilando il tuo codice ,ottengo il primo risultato da te proposto..

Comunque ho afferrato il concetto ,grazie mille farò piu attenzione la prossima volta.. :smt023

"apatriarca":
Microsoft Visual C++ 2010 Professional se sei studente come immagino o la sua versione Express gratuita se non lo sei. È il principale IDE professionale per lo sviluppo su Windows. Alternativamente puoi scaricarti Code::Blocks (installa quello con mingw incluso se non vuoi smanettare installando un tuo compilatore differente) che è open-source e potrebbe essere maggiormente compatibile con il codice del tuo professore se usa estensioni di gcc.


Perfetto,più in la ci faro un pensierino,grazie!! :D

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.