PDA

Visualizza la versione completa : [C++] Compilazione: riferimento a membro non statico


08-06-2014, 12:46
sto cercando di compilare in c++ un SW per la gestione accessi, ho diversi problemi, premetto che la prima volta, qualcuno veramente preparato ha voglia di darmi una mano?

08-06-2014, 12:47
allego il sw (scusate se scritto malissimo e ha bisogno di assunzioni)




//swiluppo SW per il controllo accessi


#include <iostream>
#include <stdlib.h>
#include <string>
#include <vector>
#include <ctime>
using namespace std;
//definizione badge con le sue funzioni
class Badge
{
public:
int id; //numero identificativo tessera
char nome [20];
string cognome;
string indirizzo;
bool aut [6]; //atorizzazione
public:
int read_id ();
void autorizzazioni ();
};
//definizione del cartellino con le sue funzioni, relative alla raccolta degli orari di entrata e uscita dei singoli
class Cartellino
{
public:
char nome [20];
char cognome [20];
int id;
int mese;
int anno [4];
int giorno;
int timeIN;
int timeOUT;
void clock_in ();
void clock_out ();
};
class leggi_badge
{
public:
int id;
int modulo_varco; //il modulo varco il sistema che comanda l'elettroserratura,la barriera infrarossi e l'accensione luce.
private:
string door1;
string door2;
string lab1;
string lab2;
string lab3;
string lab4;
string lab5;
string lab6;
};




//definizione dei badge
Badge b0,b1,b2,b3;


//definizione modulo varco
int leggi_badge::modulo_varco (string d1, string d2, string l1, string l2, string l3, string l4, string l5, string l6)
{
this->door1=d1; // modulo varco lettura ingresso
this->door2=d2; // modulo varco lettura uscita
this->lab1=l1; // modulo varco primo laboratorio
this->lab2=l2; // modulo varco secondo laboratorio
this->lab3=l3;
this->lab4=l4;
this->lab5=l5;
this->lab6=l6;
}
//implementazioni dei metodi


int Badge::read_id () //lettura del badge
{
return id;
};




//definizioni "autorizzazioni" con ciclo aurorizzati viene autorizzato in questo caso quattro badge
void Badge::autorizzazioni ()
{
int i;
b0.aut [0] = true;
b1.aut [2] = true;
b1.aut [4] = true;
b2.aut [6] = true;
for (i=0; i<6; i++)
b3.aut [i] = true;
};


main()
{
do
{
Badge = procedura flag; // la prcedura "flag" interna al modulo varco attende e si aggiorna tutte le volte che c' una nuova informazione (badge)
} // qui leggo il badge appena il badge valido lui esce dal ciclo attesa
while (Badge == 0);




switch (leggi_badge.modulo_vaco)
{
case 1: //modulo varco utilizzato all'ingresso inserimento orario d'entrata

time_t timer; //utilizzo della libreria ctime
struct tm y2k;
double seconds;


y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0;
y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;


time(&timer); //prende l'ora attuale uguale: timer = time(NULL)
seconds = difftime(timer,mktime(&y2k));


return 0;

case 2: //modulo varco utilizzato all'uscita inserimento orario d'uscita


time_t timer;
struct tm y2k;
double seconds;


y2k.tm_hour = 0; y2k.tm_min = 0; y2k.tm_sec = 0;
y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;


time(&timer); //prende l'ora attuale uguale: timer = time(NULL)
seconds = difftime(timer,mktime(&y2k));


return 0;


case 3: // modulo varco utilizzato dal primo lab

leggi_badge.modulo_varco; //risposta dal lab
int countF, countP; //counF conta il primo, countP conta le persone


if (Badge.aut (0)) (leggi_badge.modulo_varco()); // lettore di fronte al lab se autorizzato apre la porta (b0)

if (leggi_badge.modulo_varco()) (countF = countF + 1);


if (countF==1) (leggi_badge.modulo_varco());//accende la luce


countF--;//conta al contrario
if (countF=0) (leggi_badge.modulo_varco());//spenge la luce

case 4: // modulo varco utilizzato dal secondo lab
case 5: // modulo varco utilizzato dal terzo lab
case 6: // modulo varco utilizzato dal quarto lab
case 7: // modulo varco utilizzato dal quinto lab
case 8: // modulo varco utilizzato dal sesto lab

08-06-2014, 12:51
sul modulo_varco mi da errore....(riferimento a membro non statico, non include alcun membro, ecc)

08-06-2014, 13:06
Sunto del programma:
- porta d'ingresso con lettore badge in-out per registrazione orario
- sei laboratori con lettore badge
- quattro badge con quattro autorizzazioni diverse
- badge autorizzato il modulo_varco del lab in oggetto apre la porta, il sensore IR sempre gestito dal modulo varco conta le persone, se la prima comanda la luce, se stato usato un solo badge e il sensore IR conta due persone suona l'allarme.
- in uscita dal lab il sensore IR conta al contrario e l'ultimo spegne la luce, il lettore della porta principale legge il badge in uscita e registra il time.

LeleFT
09-06-2014, 11:07
Ho corretto il titolo della discussione, in quanto vietato dal regolamento interno (http://forum.html.it/forum/showthread.php?threadid=973887) scrivere cose come "solo per esperti" o simili (perch non hanno alcun senso: ci che per te richiede l'intervento di un esperto, per qualcun altro potrebbe essere un intervento banale).

Inoltre, sempre secondo quanto richiesto dal regolamento interno, ho aggiunti i tag CODE per il codice, che permettono di mantenere formattazione ed indentazione del codice.


Ciao. :ciauz:

Scara95
09-06-2014, 12:37
Ho letto il codice solo di sfuggita, ma l'errore autoesplicativo: riferimento a metodo non statico: cerchi di richiamare un metodo di istanza su una classe. Cerca il significato di static method sul tuo manuale C++.
Inoltre non stai rispettando praticamente nessun principio dell'OOP e a dirla tutta il tuo codice semplicemente non ha senso. Mi dispiace ma devi ripartire dalle basi, studiando seriamente il linguaggio.

Loading