Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC
Abbiamo provato la Gigabyte Radeon RX 9070 GRE Gaming OC, nuova proposta RDNA 4 che si inserisce tra GeForce RTX 5060 Ti e RTX 5070. Prestazioni solide in rasterizzazione e ray tracing, frequenze elevate grazie all'overclock di fabbrica e raffreddamento efficace: ecco come si comporta nei nostri test.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-11-2007, 00:19   #1
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
[C++] Ereditarieta e template....... problemi..

Ho un problemino c++ con i template .... è un pò complesso ....
Allora ho un'interfaccia
Codice:
class I
{
     public:
          void fI()=0;
};
una seconda interfaccia che eredita del comportamento dalla prima.
Codice:
class I2:public I
{
     public:
          void fI2()=0;
};
Ho l'implementazione della prima interfaccia.
Codice:
class IImpl:public I
{
     public:
          void fI(){.....}
};
ho l'impementazione della seconda interfaccia che è un template....

Codice:
template<typename T>
class I2Impl:public I2,public IImpl
{
     public:
          void fI2(){/*implementazione con template!!*/}
};
Cosi scrivendo al momento che andavo a istanziare il template il compilatore mi si arrabbiava e mi diceva che mancava l'implementazione di fi().... ma c'è .....

per farlo funzionare o duvuto fare:

Codice:
template<typename T>
class I2Impl:public I2,public IImpl
{
     public:
          void fi(){IImpl::fi()}
          void fI2(){/*implementazione con template!!*/}
};
Come mai ???
cosa c'è che mi sfugge ?? nn dovrei riscrivere la chiamata ad una funzione che gia ho!!
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2007, 11:06   #2
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Primo errore: devi dichiarare fI e fI2 virtual (virtual void fI()=0).
Probabilmente pero' e' solo un errore di trascrizione.
Il motivo principale per cui non funziona e' pero' dovuto la fatto che quando hai derivato da I non hai specificato
la derivazione di tipo virtual
Codice:
class I2 : virtual public I { 
...
Facendo cosi', quando poi derivi sia da I2 che da IImpl, ti trovo con due fI distinte ( I2::fI e IImpl::fI ) per cui ti in pratica in I2Impl implementi
solo una delle due e il compilatore si lamenta di questo.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele

Ultima modifica di marco.r : 17-11-2007 alle 11:15. Motivo: ops, errore
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2007, 14:11   #3
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
Si in effetti ci sono una serie di errori di tracrizione .....

Ho messo i virtual .... ma nulla stesso problema ...
tglman è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2007, 15:35   #4
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Codice:
#include <iostream>
using namespace std;


class I
{
     public:
          virtual void fI()=0;
};


class I2:virtual public I
{
     public:
          virtual void fI2()=0;
};

class IImpl:virtual public I
{
     public:
          void fI(){ cerr << "fI()" << endl;}
};


template<typename T>
class I2Impl:public I2,public IImpl
{
     public:
          void fI2(){ cerr << T(0) << endl; }
};



int main()
{
    I2Impl<bool> x;
    x.fI();
    x.fI2();
}
Questo funziona, occhio che i secondi "virtual" di cui parlavo sono quelle nella dichiarazione della classe, non del metodo.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2007, 16:20   #5
tglman
Senior Member
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
Grazie avevi ragione ...... avevo messo "virtual" solo sull'interfaccia figlia e non nell'implementazione adesso l'ho messo e funziona tutto grazie!!!
tglman è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Recensione Vivo X300 Ultra: fotocamera eccezionale, ma prezzo proibitivo Recensione Vivo X300 Ultra: fotocamera ecceziona...
Polaroid Go Generation 3 è la nuo...
Virgin Galactic torna a far volare lo sp...
La sonda spaziale marziana NASA MAVEN &e...
Nucleare in Italia, approvata la legge d...
Surface Pro, nuova variante in arrivo: a...
Iliad lancia la sua prima offerta FWA pe...
Addio compromessi? I nuovi tablet rugged...
Cooler Master al Computex 2026: case sil...
G.Skill mostra AMD EXPO ULL al Computex:...
Hilti e i data center, l'ingegneria dell...
Narwal anticipa il Prime Day: sconti fin...
Sharkoon mantiene il rapporto qualit&agr...
Xference e Aruba insieme per l'IA privat...
Google Wallet, in arrivo i documenti d'i...
Recensione OPPO Enco Clip2: tanta tecnol...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 03:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v