PDA

View Full Version : Domanda dichiarazione array


d1l3mm4
26-11-2012, 11:18
Salve a tutti, chiedo scusa per la domanda stupida ma ho un piccolo problema con le classi ...

Cosa devo fare : semplice prova di dichiarazione di array e successiva stampa tramite l'utilizzo delle classi.
Errore riscontrato : dichiarazioni multiple di "ciao".

Ed ora il codice.

Classe array.h :

#ifndef ARRAY_H
#define ARRAY_H

#include <iostream>
using namespace std;

const int max_n=20;

class array
{
public:
void asd(int);
void array2(int);

private:
int dati[max_n];
};

array ciao;

#endif // ARRAY_H


Il file della classe array.cpp :

#include "array.h"

void array::asd(int a)
{
for (int i=0; i<a; i++)
dati[i]=i;
}

void array::array2(int a)
{
for (int i=0; i<a; i++)
cout<<dati[i]<<" ";
}


Ed infine il main.cpp :

#include "array.h"

int main(){
ciao.asd(max_n);
ciao.array2(max_n);
return 0;
}


Sicuramente è una cavolata ^^'

!fazz
26-11-2012, 14:08
oddio, saranno almeno 10 anni che non uso più il c++ con le classi ma così di sfuggita

1) nel main includi l'header ma non viene mai incluso il codice (nel main dovresti includere il .cpp che a sua volta include il .h
2) manca il costruttore
3) non istanzi un oggetto della classe e i metodi non sono statici

d1l3mm4
26-11-2012, 14:18
Eh, devo usare le classi del c++ perchè sto cercando di fare un programma con le Qt ç_ç

Ho provato ad includere il file .cpp però mi dava errore comunque, ho provato a dare una letta su un libro americano delle qt e c'è scritto di includere il file .h in quanto il codice stesso della classe (le funzioni nel file .cpp) vengono richiamate in automatico dal compilatore ... (ma potrei aver capito male ç_ç)

(Il costruttore non ho capito bene come impostarlo, dovrebbe essere la funzione con i parametri che decido di dargli di default, oppure una funzione priva di parametri ?)

Per quanto riguarda l'errore che mi dava era una mia svista, quando scrivevo nel file della classe "array ciao", lo includeva in automatico 2 volte e quindi creava un totale di 3 oggetti dello stesso tipo con lo stesso identificatore (sono un pollo xD)

Grazie comunque per le dritte, per quanto riguarda i metodi, cosa intendi con "non sono statici" ? (sono proprio niubbo in fatto di classi xD)

AllerITA
26-11-2012, 15:00
Fondamentalmente manca un costruttore che inizializzi le variabili dell'oggetto.
Poi la variabile statica ciao la lascerei come variabile statica locale del modulo di codice che la utilizza e quindi va dichiarata solo in main.cpp.
Per il resto dovrebbe andare bene così (in visual studio 2010 funziona tutto ho provato).

d1l3mm4
26-11-2012, 15:03
Perfetto grazie mille ^^