Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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: 6402
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: 6402
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: 6402
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