Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-05-2012, 10:03   #21
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
in realtà l'avevo dichiarato solo in figurina (friend class album) per far si che album potesse usare la classe figurina.. poi per provare l'ho messo avunque lol ma non va
se lo elimino ovunque mi da errore no matching function for call to 'figurina::figurina()
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 11:12   #22
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
in realtà l'avevo dichiarato solo in figurina (friend class album) per far si che album potesse usare la classe figurina.. poi per provare l'ho messo avunque lol ma non va
se lo elimino ovunque mi da errore no matching function for call to 'figurina::figurina()
No allora, dichiarare funzioni o classi friends serve per rendere visibili a queste funzioni e/o classi i membri privati. Questa cosa a te non serve, in quanto un album è una semplice raccolta di figurine. Quindi elimina le dichiarazioni friend, crea una classe album e al suo interno inserisci un container (un vector, una list, una map o quella che implementa le funzionalità più idonee al tuo utilizzo).

Esempio:
Codice:
// album.h
#include "figurina.h"
#include "vector"

#ifndef ALBUM_H
#define ALBUM_H

class Album {
    public:
        Album();
        Album& Add(const Figurina& figurina);
    private:
        vector<Figurina> _album;
}

#endif


//album.cpp
#include "album.h" 

Album::Album()
{
}

Album& Album::Add(const Figurina& figurina)
{
    _album.push_back(figurina);
    return *this;
}
In questo esempio ho usato per semplicità un container vector, ma probabilmente map o multimap sarebbero anche più idonee permettendoti di associare ogni figurina ad una precisa key, magari per la ricerca o per altro.

Ultima modifica di [Kendall] : 23-05-2012 alle 11:15.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 11:47   #23
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
questo perà utilizzando l STL ma io non posso usarlo, devo allocarlo dinamicamente manualemnte..
ma in ogni caso c'è un errore perchè anche utilizzando vector mi dice:
figurina non dichiarata nello scope
template argument 1 non valido
template argument 2 non valido

Ultima modifica di microinfo : 23-05-2012 alle 11:54.
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 12:20   #24
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
questo perà utilizzando l STL ma io non posso usarlo, devo allocarlo dinamicamente manualemnte..
Allora all'interno di Album devi utilizzare un array di figurine, o ancor meglio (secondo me) un array di puntatori a figurine.
Fermo restando che non è pensabile per un esercizio crearsi una propria classe che gestisca dinamicamente la crescita dell'album (come fa la STL) in quanto sarebbe assolutamente dispendioso a livello di tempo (visto che devi gestire la crescita dinamica di memoria e non è banale), l'unica altra possibilità è appunto andare sui "semplici" array. Questo comporta che devi preventivamente avere idea del numero massimo di figurine contenibili nell'album (e la cosa può anche starci, pensa per esempio agli album di figurine che acquisti, all'inizio è un insieme definito di spazi liberi nei quali poi andrai ad incollare le figurine acquistate).
Posto questo, gli approci sono 2 (che mi vengono in mente), e poniamo per esempio che il numero massimo di figurine sia 200 (per semplicità della spiegazione):

1) Ti crei staticamente ( Figurina _album[200]; ) o dinamicamente ( Figurina* _album = new Figurina[200]; <-- Questo presuppone che nella dichiarazione della classe dichiari un puntatore a figurine, e poi nel costruttore fai puntare quel puntatore ad un array di 200 figurine) l'album di figurine. Il vantaggio dell'usare il puntatore è che puoi decidere a runtime il numero di figurine che costituisce l'album, a differenza del dichiarare direttamente un array (che deve essere dichiarato con una costante).
L'aspetto negativo di questo approcio è invece che istanziare Album comporterà sempre l'occupazione di memoria pari a istanziare anche 200 variabili Figurina.

2) Ti crei un vettore di puntatori a Figurina. In questa maniera istanzi solo i 200 puntatori (che solitamente hanno dimensione di 4 byte ognuno) ed eviti di istanziare 200 istanze di Figurina, che sicuramente è ben più corposa a livello di spazio occupato. Li assegni tutti quant a null, inzialmente, e infine a runtime, quando serve, crei una nuova istanza di Figurina e l'assegni a uno dei puntatori. Cosa negativa di questo approcio? Che andrà ad occupare sempre minor memoria, rispetto al caso 1, tranne quando avrai un album completamente riempito, caso nel quale avrai forzatamente 200 istanze anche usando i puntatori, quindi alla fine la memoria occupata sarà la medesima (anzi leggermente superiore visto gli 800 byte utilizzati per i 200 puntatori) rispetto al caso 1.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 12:45   #25
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
la traccia mi dice:
Si realizzi quindi la classe Album, contenente oggetti di tipo Figurina. La classe Album contiene le seguenti variabili membro:
....
Num, intero rappresentante il numero di figurine presenti nella collezione
A, vettore di elementi di tipo figurina allocato dinamicamente (conterrà tanti elementi quanti indicati da Num)

il problema però rimane qui : figurina* valbum; //errore:figurina non è nome del tipo
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 13:20   #26
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
la traccia mi dice:
Si realizzi quindi la classe Album, contenente oggetti di tipo Figurina. La classe Album contiene le seguenti variabili membro:
....
Num, intero rappresentante il numero di figurine presenti nella collezione
A, vettore di elementi di tipo figurina allocato dinamicamente (conterrà tanti elementi quanti indicati da Num)

il problema però rimane qui : figurina* valbum; //errore:figurina non è nome del tipo
Ok, quindi la consegna ti chiede di usare un puntatore al quale "aggancerai" a runtime un'array di dimensione specificata (vedi caso 1 di prima). Fissato questo, posta tutto il codice del programma (integralmente), o se preferisci inviameloin privato,poi vedrò di risponderti qui
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 13:38   #27
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
ti ho inviato un pm, cmq grazie per l'aiuto
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 16:26   #28
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Allora microinfo, io ho trovato questi errori:

1) Nell'header di figurina dovresti eliminare l'include di album.h . Questo perchè facendo in tal modo lui va a leggersi la dichiarazione di album e si ritrova ad utilizzare figurina, una classe che ancora deve definire. Per questo ti dice che figurina non è un tipo (perchè lui in effetti ancora non sa che esiste e come è fatta!).

2) Aggiungi su figurina e sulla sua sottoclasse item dei costruttori di default con nessun parametro. Definendone uno tuo il compilatore non si prende la premura di definirlo più (il costruttore item() e figurina() per intenderci), e questi sono i costruttori utilizzati quando dichiari un array di un tipo definito da te.

Poi non vedo altro di rilevante, almeno apparentemente. Prova a fare quelle modifiche e poi dimmi se funziona.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 19:07   #29
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
scusa non ho capito il punto 2, perchè non mi funziona se definisco il vettore qui?

album::album(char* edit="",char* coll="",int n=0){
editore=new char[strlen(edit)+1];
strcpy(editore,edit);
collezione=new char[strlen(coll)+1];
strcpy(collezione,coll);
num=n;
valbum=new figurina[num];
}
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 21:00   #30
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
scusa non ho capito il punto 2, perchè non mi funziona se definisco il vettore qui?

album::album(char* edit="",char* coll="",int n=0){
editore=new char[strlen(edit)+1];
strcpy(editore,edit);
collezione=new char[strlen(coll)+1];
strcpy(collezione,coll);
num=n;
valbum=new figurina[num];
}
Perchè non puoi inizializzare un'array di oggetti di un tipo definito dall'utente se esso non ha un costruttore di default. Per dire, nella forma che tu utilizzi:

valbum = new figurina[num]

con quale costruttore essi vengono inizializzati? (dato che non specifichi alcun parametro).
La risposta sta proprio sul costruttore di default. Non necessitando di alcun parametro è idoneo alla forma utilizzata sopra, e pertanto deve essere specificato.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 23-05-2012, 21:37   #31
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
cioè intendi dire che visto che non posso non posso dargli un valore di default devo creare il costruttore figurina();
però questo album(char* edit="",char* coll="",int n=0)
rimane un altro costruttore di default?

e la creazione del vettore dove la faccio?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2012, 08:47   #32
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Il costruttore di default serve solo (per quanto riguarda questo caso) per la classe della quale vuoi creare un array di oggetti, quindi figurina (e relativa classe madre).
Per Album puoi lasciare il costruttore che già avevi messo.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2012, 14:43   #33
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
ma mi conviene creare una funzione per inizializzare il vettore con new oppure posso farlo nel costruttore? perchè nel costruttore
album::album(char* edit="",char* coll="",int n=0){
editore=new char[strlen(edit)+1];
strcpy(editore,edit);
collezione=new char[strlen(coll)+1];
strcpy(collezione,coll);
num=n;
valbum=new figurina[num];
}
mi dice che non trova la referenze figurina::figurina(), ma io i costruttori di default li ho messi sia in padre che in figlio :s
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2012, 15:50   #34
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
ma mi conviene creare una funzione per inizializzare il vettore con new oppure posso farlo nel costruttore? perchè nel costruttore
album::album(char* edit="",char* coll="",int n=0){
editore=new char[strlen(edit)+1];
strcpy(editore,edit);
collezione=new char[strlen(coll)+1];
strcpy(collezione,coll);
num=n;
valbum=new figurina[num];
}
mi dice che non trova la referenze figurina::figurina(), ma io i costruttori di default li ho messi sia in padre che in figlio :s
Un'alternativa è quella di eliminare i parametri di default dall'implementazione dei costruttori che avevi prima, ed inserire i valori di default solo nel prototipo dentro la dichiarazione della classe (che è comunque una pratica più pulita in generale, secondo me).

Es°
Codice:
// Point.h
#ifndef POINT_H
#define POINT_H

class Point 
{
   public:
      Point(double x = 0, double y = 0)        // anzichè Point(double x, double y)
   private:
      double x;
      double y;
}

#endif

// Point.cpp
#include "Point.h"

Point::Point(double x, double y)  //anzichè Point(double x = 0, double y = 0)
{
   this->x = x;
   this->y = y;
}
Così te lo dovrebbe accettare come costruttore di default, e quindi permetterti di utilizzarlo per istanziare l'array di figurine.
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 11:05   #35
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
non ci riesco mado, ho fatto i costruttori di default come mi hai detto, ma sto vettore non riesco proprio a crearlo. Puoi farmi vedere come si fa?

call of overloaded 'figurina()' is ambiguous album.cpp

album::album(char* edit,char* coll,int n){
editore=new char[strlen(edit)+1];
strcpy(editore,edit);
collezione=new char[strlen(coll)+1];
strcpy(collezione,coll);
num=n;
valbum=new figurina[num];
}
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 11:21   #36
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
non ci riesco mado, ho fatto i costruttori di default come mi hai detto, ma sto vettore non riesco proprio a crearlo. Puoi farmi vedere come si fa?

call of overloaded 'figurina()' is ambiguous album.cpp

album::album(char* edit,char* coll,int n){
editore=new char[strlen(edit)+1];
strcpy(editore,edit);
collezione=new char[strlen(coll)+1];
strcpy(collezione,coll);
num=n;
valbum=new figurina[num];
}
La chiamata è ambigua perchè hai definito un costruttore di default (quindi senza parametri) e un altro costruttore con dove però ai vari parametri dai sempre un valore di default. Questo significa che il compilatore non sa se la chiamata a figurina() sia per il costruttore di default o per quell'altro con tutti i parametri di default.
Le possibilità sono 2:

1) mantieni entrambi i costruttori, ma in quello non di default lasci almeno un parametro non specificato (nel senso, almeno nel primo parametro non devi specificare un valore di default)

2) elimini il costruttore di default mantenendo solo quello che avevi prima con i vari parametri, e fai quello che ti ho scritto nel precedente post (cioè invece di specificare i parametri di default nel file di implementazione li specifichi nell'header della classe, cioè nel prototipo del costruttore).
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 12:54   #37
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
ah ecco ora funziona, avevi ragione
per finire ho fatto le tre fuznioni richieste nella classe album
int &album::operator[](int ind){
if(ind<0 || ind>num)
throw bad_access();
return valbum[ind];
}
void album::visua_mancanti(){
cout<<"Le figurine mancanti alla collezione sono: "<<endl;;
int i;
for(i=0;i<num;i++){
if(valbum[i].getpre()==false){
cout<<valbum[i];
cout<<endl;}
}
}
void album::stampa_mancanti(){
int i;
fstream f;
f.open("dati.txt",ios::out);
f<<"Le figurine mancanti sono: "<<endl;
for(i=0;i<num;i++){
if(valbum[i].getpre()==false)
f<<"La figurina numero: "<<valbum[i]<<endl;
}
f.close();
}
mentre la funzione acquisisce nella classe figurina, non l'ho capita, cioè come faccio a dire se è presente o meno, se il vettore figurine è definitoin album?
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 13:43   #38
[Kendall]
Senior Member
 
L'Avatar di [Kendall]
 
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
Quote:
Originariamente inviato da microinfo Guarda i messaggi
ah ecco ora funziona, avevi ragione
per finire ho fatto le tre fuznioni richieste nella classe album
int &album::operator[](int ind){
if(ind<0 || ind>num)
throw bad_access();
return valbum[ind];
}
void album::visua_mancanti(){
cout<<"Le figurine mancanti alla collezione sono: "<<endl;;
int i;
for(i=0;i<num;i++){
if(valbum[i].getpre()==false){
cout<<valbum[i];
cout<<endl;}
}
}
void album::stampa_mancanti(){
int i;
fstream f;
f.open("dati.txt",ios::out);
f<<"Le figurine mancanti sono: "<<endl;
for(i=0;i<num;i++){
if(valbum[i].getpre()==false)
f<<"La figurina numero: "<<valbum[i]<<endl;
}
f.close();
}
mentre la funzione acquisisce nella classe figurina, non l'ho capita, cioè come faccio a dire se è presente o meno, se il vettore figurine è definitoin album?
Tutte le classi possono comunicare con altre classi. Nel caso specifico immagino che il metodo debba sapere se la specifica istanza della classe figurina è presente sull'album. Questo significa fare una comparazione di riferimenti (che per i puntatori equivale banalmente ad un puntatore1 == puntatore2). Non voglio risolvere la cosa per te (non per cattiveria, ma ti è più utile sbatterci la testa), ma ti do un suggerimento: la funzione della quale parli evidentemente ha dei parametri in ingresso. Di sicuro ci sarà pure un modo per dargli in pasto un qualche riferimento a ad un album di figurine...
[Kendall] è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2012, 17:02   #39
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
io non riesco a capire proprio il testo...
cioè quello che ho capito:
//creo tre oggetti figurina
figurina f1("pato",3,false,false);
figurina f2("lavezzi",4,false,false);
figurina f3("totti",10,false,false);

//creo al'album che le conterrà (in valbum)
album al;
//inserisco le figurine nell'album in questo ordine
al.valbum[0]=f1;
al.valbum[1]=f2;
al.valbum[2]=f3;
//dato il numero della figurina in ingresso, mi dice se è presente nell'album, oppure se è un doppione
f.acquisisci(4);

però non capisco l'utilità della funzione acquisici...non dovrebbe prendere in ingresso l'oggetto figurina, e non il numero?
#########
void figurina::acquisisci(int x,album a){
int i;
for(i=0;i<a.num;i++){
if(a.valbum[i].numero==x)
a.valbum[i].doppione=true;
else if(a.valbum[i].numero!=x)
a.valbum[i].presente=true;
}
}
#########



f.acquisici(2);
microinfo è offline   Rispondi citando il messaggio o parte di esso
Old 28-05-2012, 13:54   #40
microinfo
Senior Member
 
Iscritto dal: Jan 2010
Messaggi: 328
up
microinfo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
Mafia: Terra Madre: arriva il Free Ride ...
L'UE approva 70 progetti (anche in Itali...
Nuovo Cayenne Electric: è la Pors...
Adobe acquisisce Semrush per 1,9 miliard...
Black Friday Ecovacs: i migliori robot a...
Prime Video lancia i Video Recaps: la fu...
Tutti i prodotti FRITZ!Box scendono di p...
Copilot Actions può installare ma...
Corsair lancia le promozioni Black Frida...
Google apre a Taipei il suo più g...
iPhone Fold avrà la batteria con ...
Unity ed Epic Games uniscono le forze: u...
Il Black Friday di 3i: tre robot aspirap...
MSI PRO DP80: il desktop compatto che pu...
Meta perde il suo Chief AI Scientist: Le...
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: 11:25.


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