Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
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: 879
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: 879
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: 879
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


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
iPhone Fold: scorte limitate al lancio m...
OpenAI porterà la pubblicità in ChatGPT ...
TSMC aumenterà ancora i prezzi: nel 2026...
Marvel pubblica anche il secondo teaser ...
Nuovo accordo tra xAI e il Pentagono: l'...
La famiglia Xiaomi 17 sta per registrare...
Nuove auto elettriche che vedremo sul me...
E-bike illegali, a Verona il più ...
Quali sono i giochi più venduti su Steam...
HONOR sta per lanciare un nuovo smartpho...
Jared Isaacman sarà alla guida de...
Il Tesla Cybertruck non arriverà ...
Xiaomi Watch 5 è ufficiale: architettura...
CD Projekt vende GOG: il co-fondatore Mi...
Il meglio di Amazon in 26 prodotti, aggi...
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: 04:09.


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