C++ classe costruttore

fire7777777

Utente Attivo
324
11
ragazzi mi portare un semplice esempio del codice sia del main che della classe con relativo costruttore, per esempio sommo due numeri ma il metodo somma è in un altra classe, perchè non ho trovato molto materiale o comunque non ho ancora capito come lo si possa fare, grazie a tutti per la futura risposta :)
 

fire7777777

Utente Attivo
324
11
1. sapere come si richiama un metodo di un altra classe nel main
2. presi dei valori nel main tramite cin, utilizzarli nel metodo( penso con il costruttore) di un altra classe
 

pabloski

Utente Èlite
2,560
691
Hai molta confusione riguardo le classi. Una classe è un modello che definisce operazioni ( metodi ) e dati ( attributi ). Per usare i metodi non statici della classe, devi prima istanziare la classe, cioè definire un oggetto di una certa classe.

Il main non è posto in nessuna classe per cui è sbagliato parlare di "altra classe".

in pratica la faccenda è questa

Codice:
class A {
public:
   int metodo(int x, int y) { return x+y; }
};

int main() {
   A x;
   int i,j;
   cin >> i;
   cin >> j;

   cout << x.metodo(1,2);
}

il metodo di nome "metodo" fa ovviamente la somma dei suoi parametri d'input
 

fire7777777

Utente Attivo
324
11
Hai molta confusione riguardo le classi. Una classe è un modello che definisce operazioni ( metodi ) e dati ( attributi ). Per usare i metodi non statici della classe, devi prima istanziare la classe, cioè definire un oggetto di una certa classe.

Il main non è posto in nessuna classe per cui è sbagliato parlare di "altra classe".

in pratica la faccenda è questa

Codice:
class A {
public:
   int metodo(int x, int y) { return x+y; }
};

int main() {
   A x;
   int i,j;
   cin >> i;
   cin >> j;

   cout << x.metodo(1,2);
}

il metodo di nome "metodo" fa ovviamente la somma dei suoi parametri d'input

si ok ma io volevo intendere mettere quella classe a, quindi il metodo in una classe esterna
 

pabloski

Utente Èlite
2,560
691
Non puoi. Quel metodo appartiene ad A, come fai a metterlo in un'altra classe? Certo puoi creare un metodo con lo stesso nome e la stessa implementazione, ma sarà un metodo dell'altra classe e non avrà niente a che fare con metodo di A.
 

fire7777777

Utente Attivo
324
11
ma scusa ma non funziona il c++ simile al java? io facevo nel java il main e poi in un altra classe i metodi o.o
 

pabloski

Utente Èlite
2,560
691
p.s. se poi ti riferisci a questa situazione ( allora è un altro paio di maniche )

Codice:
class A { public:    int metodo(int x, int y) { return x+y; } };

class B {
public:
   f() { 
     A a;
     cout << a.metodo(2,3);
   }  
};

in questo caso il metodo f di B, definisce un oggetto di classe A e chiama metodo su quest'oggetto

ma comunque B è semplicemente un utilizzatore di metodo, non lo implementa, non lo definisce e non può metterci becco

---------- Post added at 12:07 ---------- Previous post was at 12:06 ----------

capisco....java però parte dall'assunto che pure il main sta in una classe, c++ no

il main di c++ è una funzione che sta all'esterno di qualsiasi classe

---------- Post added at 12:10 ---------- Previous post was at 12:07 ----------

ma scusa ma non funziona il c++ simile al java? io facevo nel java il main e poi in un altra classe i metodi o.o

la cosa che più si avvicina ad un programma simil-java è questa

Codice:
[COLOR=#339900]#include <QApplication>[/COLOR]
[COLOR=#339900]#include <QPushButton>[/COLOR]
[COLOR=#0000ff]int[/COLOR] main[COLOR=#008000]([/COLOR][COLOR=#0000ff]int[/COLOR] argc, [COLOR=#0000ff]char[/COLOR] [COLOR=#000040]*[/COLOR]argv[COLOR=#008000][[/COLOR][COLOR=#008000]][/COLOR][COLOR=#008000])[/COLOR]
[COLOR=#008000]{[/COLOR]
QApplication app[COLOR=#008000]([/COLOR]argc, argv[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
QPushButton helloButton[COLOR=#008000]([/COLOR][COLOR=#FF0000]"Hello World"[/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
helloButton.[COLOR=#007788]resize[/COLOR][COLOR=#008000]([/COLOR]80, 20[COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
helloButton.[COLOR=#007788]show[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#0000ff]return[/COLOR] app.[COLOR=#007788]exec[/COLOR][COLOR=#008000]([/COLOR][COLOR=#008000])[/COLOR][COLOR=#008080];[/COLOR]
[COLOR=#008000]}

ma comunque stiamo semplicemente istanziando un oggetto della QApplication all'interno del main ( che non sta in nessuna classe, a differenza di java )
[/COLOR]
 

campo23

Utente Attivo
621
118
CPU
i5 7600k
Dissipatore
HR-02 Macho
Scheda Madre
MSI Z270 Gaming M5
HDD
Samsung 960 EVO 256gb
RAM
Vengeance DDR4 16GB 3000Mhz
GPU
EVGA RTX 2060 XC Black
Monitor
Samsung U28H750
PSU
Corsair CX 550M
Case
Phanteks Eclipse P400 Tempered Glass
OS
Windows 10 Professional x64
penso che chieda se è possibile mettere nel file main.cpp solo il main e poi mettere una classe in un'altro file del progetto, tipo in classi.h o .c, visto che in java ogni classe ha un file apparte
 

pabloski

Utente Èlite
2,560
691
penso che chieda se è possibile mettere nel file main.cpp solo il main e poi mettere una classe in un'altro file del progetto, tipo in classi.h o .c, visto che in java ogni classe ha un file apparte

hai ragione, rileggendo le sue risposte e in particolare "io facevo nel java il main e poi in un altra classe i metodi", mi viene da pensare che quando parla di classe si riferisce ad un file

del resto java impone il paradigma che ogni classe dev'essere racchiusa nel suo file
 

Simomuso

Utente Attivo
460
22
Io solitamente ci lavoro in questo modo :
- un file .h per definire la classe;
- un file .cpp per scrivere il corpo delle funzioni
- un file main.cpp per testare il tutto
 

Entra

oppure Accedi utilizzando

Hot: PS5 VS XBOX X/S?

  • Playstation 5

    Voti: 270 62.2%
  • XBOX Series X/S

    Voti: 164 37.8%

Discussioni Simili