Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
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


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
L'equipaggio della missione Shenzhou-20 ...
Possibili detriti spaziali del razzo cin...
Amazon distrugge i prezzi: TV OLED LG, i...
Trump studia dazi fino al 100% per sping...
ASUS Vivobook Go 15 in offerta su Amazon...
Occhio a questi Mini PC e tablet in offe...
La navicella Dragon di SpaceX ha modific...
Il Gruppo Volkswagen taglia la produzion...
Amazon sconta gli spazzolini Oral-B iO: ...
Metal Gear Solid: nuova Collection in ar...
Amazon lancia i pareggi NO IVA: maxi sco...
DAZN lancia una nuova promo per ex clien...
iPhone 17 supera il test di resistenza d...
Electronic Arts presto acquisita per 50 ...
Sierra Space: lo spazioplano Dream Chase...
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: 05:47.


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