Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe
La flessibilità di configurazione è il punto di forza di questo 2-in-1, che ripropone in un form factor alternativo tutta la tipica qualità dei prodotti Lenovo della famiglia ThinkPad. Qualità costruttiva ai vertici, ottima dotazione hardware ma costo che si presenta molto elevato.
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-01-2004, 12:01   #1
burohkr
Member
 
Iscritto dal: Jan 2002
Messaggi: 103
C++ estrattori e insertori

ciao a tutti!!! sto' lavorando con una lista doppiamente allaciata
e tengo dei dubbi clamorosi.
non mi funziona l'insertore che ho dichiarato come friend nella classe lista e mi sto' ancora domandando perche' per esempio da questa funzione non ho accesso ai privati di nodo(lista e' dichiarata come classe friend di Nodo,..dato che per l'estrattore mi e' permesso e tiene la stessa dichiarazione piu' o meno).... credo che la soluzione sia nel riuscire a capire come poter accedervi..... avete degli esempi o aiuti????..... in verita devo usarlo(l'insertore ) per leggere dati da un file del disco, devo fare un while con il flusso di entrata fino che arrivi al carattere di fine file (che ho inserito con CTRL + D)......grazie
__________________
w.axl
burohkr è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2004, 13:01   #2
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
Come hai garantito alla classe membro l'accesso alla classe contenitore?

Perchè tieni presente che friend non è ereditario e nemmeno transitivo.
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2004, 18:25   #3
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
C'e' qualche motivo per cui non usi la classe list (che e' appunto doppiamente allacciata) della libreria standard ? Ti risparmieresti un sacco di tempo di debug e con quella leggerere da file e' una sciocchezza.
Se hai un esempio dei dati che devi leggere posso mostrarti come si puo' fare.
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2004, 18:35   #4
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
Quote:
Originariamente inviato da /\/\@®¢Ø
C'e' qualche motivo per cui non usi la classe list (che e' appunto doppiamente allacciata) della libreria standard ? Ti risparmieresti un sacco di tempo di debug e con quella leggerere da file e' una sciocchezza.
Se hai un esempio dei dati che devi leggere posso mostrarti come si puo' fare.
Perdonami ma lui non dice di usarla la classe list?
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 10-01-2004, 20:18   #5
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originariamente inviato da maxithron
Perdonami ma lui non dice di usarla la classe list?
Visto che dice di aver dichiarato l'inseritore "come friend nella classe lista" ho ritenuto che parlasse di una classe da lui scritta.
A parte che non capisco perche' la lista debba avere funzioni friend dei nodi (oggetti?) che contiene, una cosa soluzione molto semplice e' la seguente.

Codice:
#include <list>
#include <iostream>
#include <algorithm> // o era <iterator> :confused: ?
using namespace std;

class Node{ /* blah */ };

istream& operator( istream& in , Node& n )
{ /* leggiamo in qualche modo un nuovo nodo da stream */ }

// blablabla ...

/* Legge da in i nodi e li mette in l */
void read_list( istream& in , list<Node>& l )
{
	copy( istream_iterator<Node>(in) , istream_iterator() , back_inserter( l ) );
}
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2004, 01:50   #6
maxithron
Senior Member
 
L'Avatar di maxithron
 
Iscritto dal: Mar 2002
Città: Italy/Usa
Messaggi: 2817
In linea di massima si ma mi manca l'elemento principale.....ossia non mi è tanto chiara la richiesta dell'autore del 3D...
__________________
"Utilizzando atomi pentavalenti drogheremo il silicio di tipo n;
Utilizzando atomi trivalenti drogheremo il silicio di tipo p;
Utilizzando della cannabis ci drogheremo noi e vedremo il silicio fare cose impossibili" - DSDT-HowTo
maxithron è offline   Rispondi citando il messaggio o parte di esso
Old 11-01-2004, 10:49   #7
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
siamo in due
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2004, 13:44   #8
burohkr
Member
 
Iscritto dal: Jan 2002
Messaggi: 103
non posso usare list. infatti la classe l'ho creata io.( non sono un esperto percio' se potete anche solo dirmi le cose piu' importanti dove dare un occhio in questi casi, ve ne sarei grato...... ho dichiarato lista come una classe friend per avere accesso agli elementi successivi e precedenti del nodo e per evitare intrusioni esterne...
__________________
w.axl
burohkr è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2004, 13:48   #9
burohkr
Member
 
Iscritto dal: Jan 2002
Messaggi: 103
il fatto e' che non conosco altri modi... e' la prima volta che lavoro
in una lista doppia..... senza dichiarare friend la classe lista non potevo accedere ai privati del nodo, cioe' nodo* seguente, e nodo* precedente..... Ho anche dei problemi con il distruttore di nodo..... l'ho lasciato vuoto, pero' come faccio a distruggere i puntatori del nodo? Grazie di tutto ciao
__________________
w.axl
burohkr è offline   Rispondi citando il messaggio o parte di esso
Old 12-01-2004, 14:15   #10
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originariamente inviato da burohkr
il fatto e' che non conosco altri modi... e' la prima volta che lavoro
in una lista doppia..... senza dichiarare friend la classe lista non potevo accedere ai privati del nodo, cioe' nodo* seguente, e nodo* precedente..... Ho anche dei problemi con il distruttore di nodo..... l'ho lasciato vuoto, pero' come faccio a distruggere i puntatori del nodo? Grazie di tutto ciao
Scusami, ora capisco bene cosa intendevi dire.
In C++ una classe A e' friend della classe B quando A puo' accedere ai campi privati/protetti di B e si ottiene con la dicitura
"friend class A" all'interno della dichiarazione della classe B.
Nel tuo caso, supponendo che le due classi si chiamino "Nodo" e "Lista"
hai messo "friend class Lista" nella dichiarazione della classe Nodo ?
Ho il dubbio che tu abbia fatto il contrario.
Se ti e' possibile mostrare qualche spezzone di codice probabilmente ti potremo esseer di maggiore aiuto.

Il distruttore della classe Nodo dovrebbe solo distruggere il nodo a cui si riferisce, e lasciare che sia la classe lista a sistemare le relazioni

ad esempio con i tre nodi seguenti

A <--> B <--> C

se devi eliminare il nodo B prima aggiorni i nodi next di A e prev di C e poi fai un delete B che dovra' limitarsi a distruggere il nodo B
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 13-01-2004, 13:57   #11
burohkr
Member
 
Iscritto dal: Jan 2002
Messaggi: 103
il nodo e'....:
class Nodo {
public:
Nodo* ant()const;
Nodo* sig()const;
int dato()const;
void ant(Nodo*);
void sig(Nodo*);
void dato(int);
void mostrar();
friend class Lista;
friend istream& operator>>(istream& ,Nodo& );
void display(ostream& ) const;
friend ostream& operator<<(ostream& ,const Nodo& );
private:
int _dato;
Nodo* _sig;
Nodo* _ant;
Nodo(int = 0,Nodo* = NULL,Nodo* = NULL);
~Nodo();
};//Nodo


Questo era il mio vecchio nodo. pero' ora mi hanno detto che e' meglio non usare friend class lista per niente, dato che peggiora l'incapsulazione..... ora ti faccio vedere i miei insertore e estrattore
....vedi se mi puoi aiutare usando pero' solamente accedenti e modificatori della classe nodo o lista(come se non avessi dichiarato la classe lista amica di nodo....Adesso sto' usando un intero ma poi lo modifichero' con una persona, perche' la lista sara' un agenda di persone......
Ti ho anche messo le ipotetiche funzioni per scrivere su file e leggere da file.....(scrivere sembra che funziona ma dovro' cambiarlo per il motivo che ti ho detto all'inizio......e' scritto in spagnolo perche' mi trovo in spagna a studiare.... ciao e grazie

void Lista::guardar()
{
char eof[5];
char nombre[25];
cout<<"nombre del fichero con extension(MAX 25 char): "<<endl;
gets(nombre);
cout<<endl;
ofstream flujoSalida(nombre,ios::out);
if(!flujoSalida)
{
cerr<<"El fichero no se puede abrir"<<endl;
exit(1);
}//if
flujoSalida<<*this;
flujoSalida.open(nombre,ios::app);
cout<<"pulsar CTRL-D por continuar: ";
cin>>eof;
flujoSalida<<eof;
flujoSalida.close();
}


/******************************************************************************/
void Lista::display(ostream& out) const
{
Nodo* temp =_primero;
//recorremos la agenda y mostramos la persona que hay en
//cada posición del array
while(temp != NULL)
{
out<<temp->_dato;
out<<endl;
temp = temp->_sig;
}//while
}

/******************************************************************************/
ostream& operator<<(ostream& out,const Lista& lista)
{
lista.display(out);
return out;
}

/******************************************************************************/
istream& operator>>(istream& entrada,Lista& lista)
{
Nodo* temp = lista._primero;
while(entrada>>temp->dato()){
temp = temp->sig();
lista._cont++;
}
return entrada;
}


/******************************************************************************/
void Lista::recuperarFichero()
{
char nombre[25];
cout <<"Escriba el nombre del fichero(con extension) a recuperar: "<<endl;
gets(nombre);
ifstream flujoEntrada(nombre,ios::in);
if(!flujoEntrada)
{
cerr<<"error"<<endl;
exit(1);
}//if
flujoEntrada>>(*this);
cout<<endl;
cout<<"****************************************"<<endl;
cout<<"* Datos almacenados en memoria(agenda) *"<<endl;
cout<<"****************************************"<<endl;
}

/* es el cuerpo del destructor, pero lo pongo aqui para ahorrar cidigo
* ganando tambien lejibilidad
******************************************************************************/
__________________
w.axl
burohkr è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Meta avrebbe scaricato illegalmente migl...
QNAP annuncia la funzionalità di ...
Fino a 96 core per chip: la nuova CPU se...
Robot che crescono mangiando i loro simi...
Star Wars Outlaws 2 cancellato: per Ubis...
F1 senza freni: il film supera i 500 mil...
Una supersportiva elettrica da 429 CV a ...
Denodo DeepQuery: ricerche complesse in ...
Pluribus è la nuova ambiziosa ser...
IA come persone: avranno una personalit&...
Scoppia la bufera NSFW: la mano di Colle...
Philips porta OneBlade su Fortnite: arri...
Il consumo dei data center AI esplode: r...
Dimenticate tutto quello che avete visto...
Prodotti illegali su Temu: l'UE avvia pr...
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:17.


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