Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-03-2013, 00:10   #1
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
[C++] compilare programmini POO: main

Sto studiando la programmazione object oriented.
Ho un problema: scrivo le classi che mi servono (separando .h e .cpp cioe interfaccia e implementazione)e per compilare ho bisogno di un MAIN.. qualcuno sa dirmi come va scritto? All'interno di una classe? Un esempio in modo generico!?
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 01:31   #2
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
il main in una classe credo sia una cosa di java et simili. in c++ il main deve essere nel namespace globale, quindi va semplicemente definito in un sorgente come una normalissima funzione. da lì istanzi le tue classi e così via.
Potresti farmi un esempio di main? Come "chiamo" le classi o come le collego con esso?

Inviato dal mio GT-I9003 usando Tapatalk
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 09:39   #3
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Includi i .h con le classi e nel main crei delle istanze

Codice:
#include <classe1.h>

int main()
{
   classe1  istanza;
   ...
   return 0;
}
Ovviamente dovrai indicare al tuo compilatore e al linker di compilare e linkare tutti i .cpp del tuo programma.
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 11:24   #4
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Quote:
Originariamente inviato da lorenzo001 Guarda i messaggi
Includi i .h con le classi e nel main crei delle istanze

Codice:
#include <classe1.h>

int main()
{
   classe1  istanza;
   ...
   return 0;
}
Ovviamente dovrai indicare al tuo compilatore e al linker di compilare e linkare tutti i .cpp del tuo programma.
Istanza sarebbe un oggetto?

Inviato dal mio GT-I9003 usando Tapatalk
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 11:33   #5
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
E le liste o vector presenti nelle classi vanno riempite nel main?
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 11:53   #6
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Che c'entra questo? E' la classe che gestisce i propri attributi interni.

Probabilmente ti manca tutta le teoria di base del C++ ... non penso che delle risposte in un forum ti aiuteranno ... usa un buon libro.
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 11:59   #7
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Quote:
Originariamente inviato da lorenzo001 Guarda i messaggi
Che c'entra questo? E' la classe che gestisce i propri attributi interni.

Probabilmente ti manca tutta le teoria di base del C++ ... non penso che delle risposte in un forum ti aiuteranno ... usa un buon libro.
Uso i due libri di deitel&deitel.. altti consigli?

Inviato dal mio GT-I9003 usando Tapatalk
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 12:13   #8
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da mistergks Guarda i messaggi
altti consigli?
Su cosa?

Scusa ... ma come mai chiedi queste informazioni sul main se stai seguendo dei libri in cui sicuramente ci sono esempi utili ?
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 13:50   #9
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Spero sia chiaro che una classe è un tipo di variabile, come "int" o "double".
int a -> a è un oggetto di tipo int.
MyClass b -> b è un oggetto di tipo MyClass.

Tutte le variabili sono sempre oggetti, quindi. Sono istanze di un certo tipo.

Quindi non capisco questa rischiesta sul main...tutti i programmi C++ hanno bisogno di una funzione main, ma non c'è un main apposta per le classi...semplicemente, nel tuo programma (la funzione main) usi variabili di tipo int, MyClass, TuaClasse...

p.s.: altri consigli: Programming: Principles and Practice using C++, di Stroustrup; Accelerated C++, di Koenig e Moo. Entrambi in inglese. Vedi tu.
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 14:12   #10
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Grazie mille! Volevo sapere questo! Perche avevo visto in giro un main all interno di una classe..
Quindi dal main creo un istanza per ogni classe.. non mi é chiaro il perche devo creare queste istanze.
So che una classe definisce un tipo di dato..
Purtroppo i libri non sempre sono chiari su tutto! Questa cosa del main non la trovo
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 14:57   #11
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da mistergks Guarda i messaggi
Grazie mille! Volevo sapere questo! Perche avevo visto in giro un main all interno di una classe..
Quindi dal main creo un istanza per ogni classe.. non mi é chiaro il perche devo creare queste istanze.
So che una classe definisce un tipo di dato..
Purtroppo i libri non sempre sono chiari su tutto! Questa cosa del main non la trovo
Escludendo il caso che tu abbia trovato una classe che incidentalmente conteneva un metodo chiamato main, molto più probabilmente ti sei imbattuto in codice C# o Java.
Cosa istanziare nel main dipende dalla logica del tuo programma. Generalmente istanzi una classe che contiene tutta la logica di avvio dell'applicazione.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 16:04   #12
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da vendettaaaaa Guarda i messaggi
Spero sia chiaro che una classe è un tipo di variabile, come "int" o "double".
int a -> a è un oggetto di tipo int.
Quote:
Tutte le variabili sono sempre oggetti, quindi. Sono istanze di un certo tipo.
Non mi risulta che sia così in C++ ...
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 17-03-2013, 16:07   #13
lorenzo001
Senior Member
 
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
Quote:
Originariamente inviato da mistergks Guarda i messaggi
Grazie mille! Volevo sapere questo! Perche avevo visto in giro un main all interno di una classe..
Ma in quale programma C++ l'hai visto?

Ma lo segui il libro o lo hai solamente in libreria ...?

Quote:
Quindi dal main creo un istanza per ogni classe.. non mi é chiaro il perche devo creare queste istanze.
Te l'ho detto prima ... perché non hai chiare i concetti di base del C++.

[quote]Purtroppo i libri non sempre sono chiari su tutto! [quote]

Su classe e istanza è chiaro qualsiasi libro di C++.

Quote:
Questa cosa del main non la trovo
Il main è una semplice funzione, come per il C.
lorenzo001 è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2013, 06:59   #14
The_ouroboros
Senior Member
 
L'Avatar di The_ouroboros
 
Iscritto dal: May 2007
Città: Milano
Messaggi: 7103
Java != C++

Prendi un libro di C++, vai a pagina 1 e leggilo, poi torni qui e ne riparliamo
__________________
Apple Watch Ultra + iPhone 15 Pro Max + Rog Ally + Legion Go
The_ouroboros è offline   Rispondi citando il messaggio o parte di esso
Old 18-03-2013, 07:31   #15
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Quote:
Originariamente inviato da mistergks Guarda i messaggi
.. non mi é chiaro il perche devo creare queste istanze.
Istanza di una classe è come dire oggetto.
int a -> a è una istanza del tipo int, cioè una variabile int, cioè un oggetto di tipo int.

@lorenzo: ci sono variabili che non sono oggetti?? Ad esempio?
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2013, 17:38   #16
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
sottopongo alla vostra attenzione questo codice di esempio...per capire come fare a compilare ed eseguire i programmi:

Codice:
//MAIN.cpp:

#include "Enoteca.h"
#include "BottigliaDiVino.h"
#include <iostream>

using namespace std;

int main()
{
  Enoteca e;

  BottigliaDiVino a(Barbera,2000,"p1",23);
  BottigliaDiVino b(Barbera,2000,"p2",67);
  BottigliaDiVino c(Gaglioppo,1900,"p2",67);
  BottigliaDiVino d(Merlot,1900,"p2",67);
  BottigliaDiVino f(Merlot,1900,"p3",25);


      

	e.aggiungiBottiglia(a);
	e.aggiungiBottiglia(b);
	e.aggiungiBottiglia(c);
	e.aggiungiBottiglia(d);
	e.aggiungiBottiglia(f);
	
	
	

	list<Vitigno> listaProd= e.vitigniAlmenoDueProduttori();
  for(list<Vitigno>::iterator it=listaProd.begin(); it!=listaProd.end(); it++)
  	cout<<*it<<endl;


return 0;
}
Codice:
Enoteca.h


#ifndef FRUTTIVENDOLO_H
#define FRUTTIVENDOLO_H

#include "BottigliaDiVino.h"
#include <cstdlib>
#include <iostream>
#include <list>
using namespace std;

class Enoteca
{

    private:
        list<BottigliaDiVino> vini;

    public:

        /**
         * Il metodo inserisce una bottiglia di vino nell'enoteca,
         * in particolare, quando una nuova bottiglia viene inserita
         * -Nota: l'inserimento (push_back) va sempre fatto-
         * se la bottiglia e' gia' presente in cantina
         * ma con prezzo differente, viene
         * aggiornato il prezzo di tutte le bottiglie
         * uguali (secondo l'operatore== della classe BottigliaDiVino)
         * presenti in cantina e il metodo restituisce true
         *
         * Altrimenti, se non vi e' stato aggiornamento di prezzo
         * il metodo restituisce false
         */
        bool aggiungiBottiglia(BottigliaDiVino b);

        /**
         * Restituisce l'annata per la quale in cantina
         * e' presente il maggior numero di bottiglie
         *
         * In caso vi sia piu' di una annata che ha questa caratteristica
         * il metodo restituisce quella piu' vecchia
         *
         * Se la cantina e' vuota il metodo restituisce -1
         */
        int annataPiuIngombrante();

        /**
         * Fissata una annata, il metodo restituisce il
         * valore complessivo totale (calcolato come somma dei prezzi)
         * di tutti e soli i vini piu costosi di quella annata
         *
         * Se non vi sono vini in quella annata il metodo
         * restituisce -1
         */
        int valorePiuCostose(int annata);

        /**
         * Restituisce la lista dei vitigni per i quali
         * in cantina sono presenti bottiglie di almeno
         * due produttori
         */
        list<Vitigno> vitigniAlmenoDueProduttori();
        
        
        

	void stampa();

        inline list<BottigliaDiVino>& getContent();
};

list<BottigliaDiVino>& Enoteca::getContent()
{
    return vini;
}

#endif
Codice:
BottigliaDiVino.h


#ifndef BOTTIGLIA_DI_VINO_H_
#define BOTTIGLIA_DI_VINO_H_

#include<string>
#include <iostream>
using namespace std;

enum Vitigno {None = 0, Barbera, Falanghina, Gaglioppo, Malvasia, Merlot, Nebbiolo};

class BottigliaDiVino
{
private:
    Vitigno nome;
    int annata; //intero >= 1945 e <= 2009
    string produttore;
	int prezzo; //intero > 10

public:
	BottigliaDiVino(Vitigno=None, int=0, string="", int=0);

	/* Due "bottiglie" sono uguali se tutti i campi tranne il prezzo sono uguali */
	bool operator==(const BottigliaDiVino&) const;

	Vitigno getNome() const;
    void setNome(Vitigno nome);

    int getAnnata() const;
    void setAnnata(int annata);

    string getProduttore() const;
    void setProduttore(string produttore);

    int getPrezzo() const;
    void setPrezzo(int prezzo);
    
    void stampa()const;
};

#endif
sono 3 files: MAIN.cpp Enoteca.h e BottigliaDiVino.h
in fase di compilazione mi da degli errori: Linker error.
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2013, 22:28   #17
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Uppino
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2013, 22:46   #18
vendettaaaaa
Senior Member
 
L'Avatar di vendettaaaaa
 
Iscritto dal: Jan 2012
Messaggi: 1267
Se il codice è solo quello, mancano le definizioni delle funzioni membri delle classi. Dovrebbero esserci "BottigliaDiVino.cpp" e "Enoteca.cpp" con dentro le definizioni ad esempio di setPrezzo().
vendettaaaaa è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2013, 23:26   #19
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Quote:
Originariamente inviato da vendettaaaaa Guarda i messaggi
Se il codice è solo quello, mancano le definizioni delle funzioni membri delle classi. Dovrebbero esserci "BottigliaDiVino.cpp" e "Enoteca.cpp" con dentro le definizioni ad esempio di setPrezzo().
Si ci sono! Pero non le ho postate!

Inviato dal mio GT-I9003 usando Tapatalk
mistergks è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2013, 10:47   #20
mistergks
Senior Member
 
L'Avatar di mistergks
 
Iscritto dal: Mar 2011
Messaggi: 1050
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
g++ main.cpp BottigliaDiVino.cpp Enoteca.cpp -o MioEseguibile

?
Compilo su windows!

Inviato dal mio GT-I9003 usando Tapatalk
mistergks è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Popucom si presenta come uno dei miglior...
Super Mario Galaxy il film: l'idraulico ...
Stellantis, contro risposta a BYD: "...
Microsoft evita una sanzione in Europa p...
TCL a IFA 2025: TV Mini LED, smartphone ...
Neanche la politica è salva: l'Al...
I nuovi Pixel 10 in mostra a Milano con ...
Perplexity di nuovo in tribunale: Merria...
AirPods 4 al minimo su Amazon: la versio...
Sam Altman sempre più convinto: l...
iPhone 17: su Amazon partono i preordini...
WhatsApp Android Beta: in arrivo i threa...
Intergalactic: The Heretic Prophet sar&a...
Gmail introduce la sezione Acquisti per ...
Con Data Transfer Essentials Google Clou...
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: 16:25.


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