Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - ERRORE C2511 e C2061
Forum - C/C++ - ERRORE C2511 e C2061

Avatar
amreo (Normal User)
Pro


Messaggi: 93
Iscritto: 18/03/2013

Segnala al moderatore
Postato alle 20:25
Lunedý, 23/12/2013
il compilatore VS 2010 mi da questi 2 errori, ma non capisco ne la causa ne il significato.
inoltre come si passano i delegate come parametri?

Codice sorgente - presumibilmente C++

  1. //Nel foglio interstazione(.h)
  2. //[Nella classe Tree::BinTreeInt]
  3.                                 void visitPreorder(intFunc f);
  4.                                 void visitPostorder(intFunc f);
  5.                                 void visitInorder(intFunc f);
  6.                                 static void visitPreorder(BinTreeInt* nodo,intFunc f);
  7.                                 static void visitPostorder(BinTreeInt* nodo,intFunc f);
  8.                                 static void visitInorder(BinTreeInt* nodo,intFunc f);
  9. //[Nella namespace Tree]
  10. typedef int intFunc(int x); //Dovrebbe essere la dichiarazione di un funzione che passa un parametro intero e //restituisce intero
  11. ------------------------------------------------------------------------------------------------------------------------------------------------------------------
  12. //Nel foglio Cpp, implementazione delle funzioni, qui mi restituisce entrambi gli errori        
  13. void BinTreeInt::visitPreorder(intFunc  f)
  14.         {
  15.                 // Visita in preorder
  16.                 if (this->exist)
  17.                 {
  18.                         this->setDato(f(this->dato));
  19.                         this->sx->visitPreorder(f);
  20.                         this->dx->visitPreorder(f);
  21.                 }
  22.         }
  23.         void BinTreeInt::visitPostorder(intFunc f)
  24.         {
  25.                 // Visita in preorder
  26.                 if (this->exist)
  27.                 {
  28.                         this->sx->visitPostorder(f);
  29.                         this->dx->visitPostorder(f);
  30.                         this->setDato(f(this->dato));
  31.                 }
  32.         }
  33.         void BinTreeInt::visitInorder(intFunc f)
  34.         {
  35.                 // Visita in preorder
  36.                 if (this->exist)
  37.                 {
  38.                         this->sx->visitInorder(f);
  39.                         this->setDato(f(this->dato));
  40.                         this->dx->visitInorder(f);
  41.                 }
  42.         }
  43.         void BinTreeInt::visitPreorder(BinTreeInt* nodo, intFunc f)
  44.         {
  45.                 // Visita in preorder
  46.                 if (nodo->exist)
  47.                 {
  48.                         nodo->setDato(f(nodo->dato));
  49.                         nodo->sx->visitPreorder(f);
  50.                         nodo->dx->visitPreorder(f);
  51.                 }
  52.         }
  53.         void BinTreeInt::visitPostorder(BinTreeInt* nodo, intFunc f)
  54.         {
  55.                 // Visita in preorder
  56.                 if (nodo->exist)
  57.                 {
  58.                         nodo->sx->visitPostorder(f);
  59.                         nodo->dx->visitPostorder(f);
  60.                         nodo->setDato(f(nodo->dato));
  61.                 }
  62.         }
  63.         void BinTreeInt::visitInorder(BinTreeInt* nodo, intFunc f)
  64.         {
  65.                 // Visita in preorder
  66.                 if (nodo->exist)
  67.                 {
  68.                         nodo->sx->visitInorder(f);
  69.                         nodo->setDato(f(nodo->dato));
  70.                         nodo->dx->visitInorder(f);
  71.                 }
  72.         }





PERCHE'?:-?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6130
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:32
Lunedý, 23/12/2013
Beh gli errori sono chiari

C2061: errore di sintassi: identificatore 'identificatore'

e

C2511: 'identificatore': funzione membro in overload non trovata in 'classe'

ma dove li hai?


P.S. Per curiositÓ ... cosa sarebbe un "foglio" "interstazione" ?

Ultima modifica effettuata da nessuno il 23/12/2013 alle 21:34


Ricorda che nessuno Ŕ obbligato a risponderti e che nessuno Ŕ perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
PM Quote
Avatar
amreo (Normal User)
Pro


Messaggi: 93
Iscritto: 18/03/2013

Segnala al moderatore
Postato alle 21:41
Lunedý, 23/12/2013
in realtÓ ho capito gli errori(pi¨ o meno), il secondo errore (C2511) Ŕ strano, perchŔ mi sembra di aver dichiarato tutti i prototipi.

il foglo intestazione(o come si scrive) Ŕ un file di codice con estensione .h che contiene le dichiarazioni di classi e prototipi di funzioni. tali prototipi vengono implementati nei file .CPP.

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6130
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:55
Lunedý, 23/12/2013
Non si parla di fogli (non stai usando Excel) ma di "file di intestazione" (file header, i .h) ... prima di fare gli alberi potreste fare la teoria di base minima minima per usare la corretta terminologia.

In ogni caso, ho scritto un po' di codice minimo e gli errori non li ho ... dove l'hai messo il typedef?


Ricorda che nessuno Ŕ obbligato a risponderti e che nessuno Ŕ perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
PM Quote
Avatar
amreo (Normal User)
Pro


Messaggi: 93
Iscritto: 18/03/2013

Segnala al moderatore
Postato alle 22:35
Lunedý, 23/12/2013
dopo la dichiarazione di BTI
ossia:
Codice sorgente - presumibilmente C++

  1. namespace tree
  2. {
  3. class BinTreeInt
  4.   {
  5. //... con i prototipi interessati e altro
  6.    };
  7.  
  8. typedef int intFunc(int);
  9. };


(scritto a memoria)

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6130
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 22:42
Lunedý, 23/12/2013
La typedef va prima della class dove viene usata ...


Ricorda che nessuno Ŕ obbligato a risponderti e che nessuno Ŕ perfetto ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilitÓ) chiamava il gioco del Lotto Tassa sulla stupiditÓ.
PM Quote
Avatar
amreo (Normal User)
Pro


Messaggi: 93
Iscritto: 18/03/2013

Segnala al moderatore
Postato alle 22:54
Lunedý, 23/12/2013
Ok! Grazie

PM Quote