Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-08-2006, 16:45   #1
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
[C++ estremo] derivare classe template da un'ADT non template + polimorfismo

(serve per lavoro) mi è venuta quest'idea;
Vorrei sapere se esistono controindicazioni derivando una classe template da una classe astratta NON TEMPLATE e usando il polimorfismo (nella fattispecie usare una puntatore a classe (astratta) per istanziare istanziazioni del template e biding dinamico sulle istanze delle istanziazioni......)
compilare compila....ma non tutto cioè che compila funziona (mentre cioè che funziona sicuramente compila ).
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2006, 17:03   #2
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
dimenticavo: nella classe template derivata c'è un template dell'STL che va istanziato con lo stesso tipo che istanzia la classe template derivata
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 09-08-2006, 22:07   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da BountyKiller
compilare compila....ma non tutto cioè che compila funziona (mentre cioè che funziona sicuramente compila ).
e allora tu controlla che funzioni, così automaticamente compila anche
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 10-08-2006, 09:38   #4
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
penso di esserci riuscito.....
finora non ho trovato controindicazioni.
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 10:40   #5
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
confermo che funziona e che al momento non vedo altri modi per utilizzare il polimorfismo con classi template.....se la classe base (adt o no) è anch'essa una classe template non è possibile istanziare un 'istanziazione template di classe derivata utilizzando un puntatore alla classe base template (almeno così afferma stoutrup...... con le classi non template invece si può, ovviamente)
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 10:51   #6
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da BountyKiller
istanziare istanziazioni del template e biding dinamico sulle istanze delle istanziazioni

Ultima modifica di AngeL) : 29-08-2006 alle 10:55.
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 11:31   #7
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
"il c++ è un linguaggio a riga di comando...come può gestire la grafica ??"

non la scorderò mai
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 11:36   #8
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da BountyKiller
"il c++ è un linguaggio a riga di comando...come può gestire la grafica ??"

Premetto che oggi sono stanco, ma non capisco questo 3d... sembra un monologo di pensieri
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 11:38   #9
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 936
Quote:
Originariamente inviato da BountyKiller
"il c++ è un linguaggio a riga di comando...come può gestire la grafica ??"

non la scorderò mai
non ricordavo che c'eri anche tu
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 12:07   #10
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da BountyKiller
"il c++ è un linguaggio a riga di comando...come può gestire la grafica ??"
Se usi la macchina da scrivere può essere un problema
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 13:12   #11
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
Quote:
Originariamente inviato da Marco Giunio Silano

Premetto che oggi sono stanco, ma non capisco questo 3d... sembra un monologo di pensieri
era una richiesta ai guru di questa sezione per sapere se avevano mai provato a fare quello che ho fatto io e che non ho trovato in nessun libro..... in particolare mi interessava sapere se c'erano controindicazioni di qualche tipo e pare di no (pare perchè nessuno ha risposto)
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 17:00   #12
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da BountyKiller
era una richiesta ai guru di questa sezione per sapere se avevano mai provato a fare quello che ho fatto io e che non ho trovato in nessun libro..... in particolare mi interessava sapere se c'erano controindicazioni di qualche tipo e pare di no (pare perchè nessuno ha risposto)
Se non ho capito male è più o meno quello che ho fatto io per istanziare a runtime una classe template, nel mio caso un Buffer che al suo interno contiene una Queue. Io per ora non ho trovato controindicazioni di sorta.
Tra l'altro mi sembra un qualcosa che può risultare utile in diverse occasioni, non capisco perchè su internet non si trovi praticamente niente a riguardo.
Anch'io avevo chiesto tempo fa sul forum informazioni sull'argomento, ma non ottenni risposta.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 29-08-2006, 17:51   #13
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
a me ha risparmiato di scrivere una ventina di classi praticamente tutte uguali....davvero una buona cosa....penso tu possa facilmente immaginare la difficoltà di gestire così tante classi in caso di bachetti o aggiunte..... i template a volte sono veramente utilissimi.....
resta da capire perchè non si possa utilizzare il polimorfismo con una classe base template...questo ancora non sono riuscito a capirlo....
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 30-08-2006, 09:07   #14
Marco Giunio Silano
Senior Member
 
L'Avatar di Marco Giunio Silano
 
Iscritto dal: Jun 2006
Città: Inverno: Novgorod. Estate: Haifa
Messaggi: 908
Quote:
Originariamente inviato da BountyKiller
era una richiesta ai guru di questa sezione per sapere se avevano mai provato a fare quello che ho fatto io e che non ho trovato in nessun libro..... in particolare mi interessava sapere se c'erano controindicazioni di qualche tipo e pare di no (pare perchè nessuno ha risposto)
eheheh capisco, cmq seguo curioso l'evolversi della questione
__________________
Hosti non solum dandam esse viam ad fugiendum, sed etiam muniendam / Ceterum censeo Carthaginem esse delendam / Et facere et pati fortia romanum est / Nemo Romanorum pacis mentionem habere dignatus est / Roma locuta, causa finita
Milla
Marco Giunio Silano è offline   Rispondi citando il messaggio o parte di esso
Old 06-09-2006, 16:47   #15
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
confermo dopo ulteriori test che l'idea funziona, l'unica cosa che non mi piace tanto è il fatto che il tipo di ritorno e i parametri dei metodi virtuali puri devono essere dei void* (almeno io non ho trovato altri modi di "fregare" il compilatore ) invece del parametro della classe template derivata (come verrebbe naturale pensare), e questo mi costringe a fare un sacco di cast.... magari dopo posto un po' di codice (non posso postare quello originale perchè è roba di lavoro e sono tenuto al riserbo... ) adattato per far capire qual'è il problema....

ogni suggerimento sarà bene accetto, avevo intenzione di wrappare questi cast con un'ulteriore derivazione , ma questo è un palliativo perchè i cast ci sono sempre!
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 07-09-2006, 00:17   #16
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da BountyKiller
(serve per lavoro) mi è venuta quest'idea;
Vorrei sapere se esistono controindicazioni derivando una classe template da una classe astratta NON TEMPLATE e usando il polimorfismo (nella fattispecie usare una puntatore a classe (astratta) per istanziare istanziazioni del template e biding dinamico sulle istanze delle istanziazioni......)
compilare compila....ma non tutto cioè che compila funziona (mentre cioè che funziona sicuramente compila ).
Vediamo se ho capito il problema:
tu ha una classe base non template come la seguente
Codice:
class Base {
  virtual void* foo() = 0;
};
e vuoi derivarla nel seguente modo
Codice:
template <typename T>
class Derived<T> : Base {
  void* foo(){ /* blah */ }
};
per fare cose come la seguente
Codice:
vector<Base*> v(10);
v[0] = new Derived<int>();
v[1] = new Derived<float>();
...
v[1]->foo();
Ho capito bene ? In questo caso non ci sono problemi nel farlo
Il problema del dover ritornare void* e' dovuto al fatto che le funzioni devono avere lo stesso tipo, forse potresti usare una classe base comune (nel tuo caso probabilmente proprio Base) al posto di void*.
Codice:
class Base {
  virtual Base* foo(Base*) = 0;
};

template <typename T>
class Derived<T> : Base {
  Base* foo(Base* arg);
};

vector<Base*> v(10);
v[0] = new Derived<int>();
v[1] = new Derived<float>();
...
v[1]->foo(0);
O forse mi sfugge qualcosa (come e' probabile, non son sicuro di aver capito bene cosa intendi per "puntatore a classe") ?
[disclaimer]: E' un bel po' che non programmo regolarmente in C++, perdonate eventuali errori e/o omissioni nel codice
__________________
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 07-09-2006, 10:06   #17
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
il problema è esattamente quello, e anch'io avevo pensato alla tua stessa soluzione prima di accorgermi che in quel modo modo si instaura un fenomeno ricorsivo infinito... appena ho tempo posto un codicillo che illustra il problema


Quote:
Originariamente inviato da marco.r
Vediamo se ho capito il problema:
tu ha una classe base non template come la seguente
Codice:
class Base {
  virtual void* foo() = 0;
};
e vuoi derivarla nel seguente modo
Codice:
template <typename T>
class Derived<T> : Base {
  void* foo(){ /* blah */ }
};
per fare cose come la seguente
Codice:
vector<Base*> v(10);
v[0] = new Derived<int>();
v[1] = new Derived<float>();
...
v[1]->foo();
Ho capito bene ? In questo caso non ci sono problemi nel farlo
Il problema del dover ritornare void* e' dovuto al fatto che le funzioni devono avere lo stesso tipo, forse potresti usare una classe base comune (nel tuo caso probabilmente proprio Base) al posto di void*.
Codice:
class Base {
  virtual Base* foo(Base*) = 0;
};

template <typename T>
class Derived<T> : Base {
  Base* foo(Base* arg);
};

vector<Base*> v(10);
v[0] = new Derived<int>();
v[1] = new Derived<float>();
...
v[1]->foo(0);
O forse mi sfugge qualcosa (come e' probabile, non son sicuro di aver capito bene cosa intendi per "puntatore a classe") ?
[disclaimer]: E' un bel po' che non programmo regolarmente in C++, perdonate eventuali errori e/o omissioni nel codice
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
Old 20-09-2006, 16:35   #18
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da BountyKiller
confermo dopo ulteriori test che l'idea funziona, l'unica cosa che non mi piace tanto è il fatto che il tipo di ritorno e i parametri dei metodi virtuali puri devono essere dei void* (almeno io non ho trovato altri modi di "fregare" il compilatore ) invece del parametro della classe template derivata (come verrebbe naturale pensare), e questo mi costringe a fare un sacco di cast.... magari dopo posto un po' di codice (non posso postare quello originale perchè è roba di lavoro e sono tenuto al riserbo... ) adattato per far capire qual'è il problema....

ogni suggerimento sarà bene accetto, avevo intenzione di wrappare questi cast con un'ulteriore derivazione , ma questo è un palliativo perchè i cast ci sono sempre!
Mi ero dimenticato del thread...

Questa è la soluzione che ho adottato io:
Codice:
class Base
{
private:
   Base * mDerived;
public:
   template <typename T> int Get(T*x, int nElements)
   {
      return ((Derived<T>*) mDerived)->Extract(x, nElements);
   }
}

template <class T> class BaseT : public Base
{
private:
    queue<T> mQueue;
public:
    int Extract(T * x, int nElements)
    {
       //estrai da mQueue nElements se possibile, inseriscili in x e ritorna il numero di elementi estratti dalla coda.
    }
}
Non mi è venuto in mente niente di meglio per cercare di istanziare una classe template a run-time.
Rimane sempre un cast al tipo della classe derivata, ma viene automaticamente determinato dal metodo template invocato. Senza cast non mi riesce.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 25-09-2006, 12:20   #19
BountyKiller
Utente sospeso
 
Iscritto dal: Oct 2002
Messaggi: 2156
eccomi qua...sono rientrato dopo due settimane di ferie
__________________
sign editata dallo staff
BountyKiller è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
NASA Curiosity: i processi non biologici...
Sega conferma l'arrivo di tanti nuovi gi...
La serie POCO X8 è pronta al debu...
Apple conferma che l'arrivo della 'nuova...
Le vendite di Square Enix sono in netto ...
iPhone 17e si mostra in un video 'first ...
Il nuovo Xiaomi Watch 5 è pronto ...
Steam Deck è out of stock in dive...
Le migliori offerte Amazon del weekend, ...
PC più potente, meno spesa: su Amazon ta...
Amazon Haul: come fare acquisti 'pazzi' ...
Threads permetterà agli utenti di...
Monitor gaming in offerta su Amazon: 180...
Samsung vuole riconquistare la leadershi...
L'app di YouTube per Apple Vision Pro &e...
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: 19:52.


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