Oppure

Loading
20/08/12 15:21
tekdu
nuovo giorno nuovo quesito:

"è possibile creare una classe template con una funzione virtuale che usa i tipi template per poi effettuarne l'overriding in una classe derivata specializzandone i tipi ?"

come si puo' fare altrimenti una cosa del genere??

class A<T,Y>{

public virtual T func(T t,Y y);
}

class B : A<string,int>{

public string func(string s,int x) : A::func(s,x)
{..............................}

}



:-?:-?:-?:-?:-?
in wait.......
aaa
20/08/12 23:01
pierotofy
Non ho capito la domanda... sai per certo che e' possibile farlo ma non sai come oppure stai chiedendo se e' possibile farlo e se si come?

Il codice che hai scritto compila?
Il mio blog: piero.dev
22/08/12 14:53
tekdu
scusami per la poca chiarezza.. ho cercato di scrivere un esempio esplicativo ed invece ho fatto solamente piu' confusione, stavolta mi spiego in modo piu' specifico.

in realtà io non so se è possibile farlo.
Il progetto sarebbe scrivere una libreria per lo sviluppo di applicazioni con il paradigma MapReduce (e poi usarla).
Ho scritto la libreria e compila (non so se funziona).
per testare la libreria volevo implementare il tipico wordCount e qui ho visto che
non so come effettuare l'override del metodo map generico scritto nella libreria.

in codice la classe generica mapper è così:

template <class Data,class k1,class v1,class k2,class v2,class v3>
class mapper {
public:
    ........
    virtual list <pair <k2,v2> > map(k1 key,v1 value); 
    .........
};

#endif	/* mapper_H */


ed io vorrei fare una cosa così:

#include "mapper.h"

class wordMapper : mapper<FILE,string,string,string,int,pair<string,int> > {
public:
    .......
    list<pair<string,int> > map(string key,string value);                                                  // qui sopra dovrei fare l'override
    ........
};



il codice scritto in questo modo ovviamente non costituisce un override del metodo map(k1 key,v1 value) della superclasse. E' questo che non so fare.

spero di essere stato chiaro. Grazie per l'aiuto.
Ultima modifica effettuata da tekdu 22/08/12 15:01
aaa
23/08/12 14:10
pierotofy
Non si puo' fare; piu' informazioni sono state discusse qui: stackoverflow.com/questions/2354210/…
Il mio blog: piero.dev
23/08/12 14:31
tekdu
Postato originariamente da pierotofy:

Non si puo' fare;........


purtroppo l'avevo capito.. consigli per aggirare il problema?
aaa
24/08/12 15:41
tekdu
io vorrei solamente che l'utente che usa la libreria "sappia" che deve implementare la funzione con quel tipo di ritorno e con quei tipi di parametri.

Forse ho "javizzato" troppo il programma ed ora mi ritrovo ad un errore di progettazione.

L'unica cosa che mi viene in mente è dichiarare protected le funzioni template (togliendo virtual visto che non si puo') e fornirne un implementazione vuota specificando tutto nella documentazione. Ma così è proprio una cacca.:_doubt:
Ultima modifica effettuata da tekdu 24/08/12 15:51
aaa