Pobieranie zmiennej z jednej klasy do drugiej

0

Zdefiniowałem klase logowanie tam podaje pin i chce go wykorzystać w drugiej klasie pobieranieDanych. Następnie w mian najpierw wpisuje pin, nastepnie chce pobrac dane z pliku dzięki metodzie imię z klasy pobieranieDanych i nie wiem czemu pojawiają mi się puste linie. Co robię źle?

TO są pliki

logowanie.cpp:
http://pastebin.com/AWCy0cah

logowanie.h:
http://pastebin.com/xZa3BuDw

pobieranieDanych.cpp:
http://pastebin.com/A5bLahbi

pobieranieDanych.h:
http://pastebin.com/cA1fdWut

0

Może jak powywalasz nadmiar pustych wierszy i wkleisz kod bezpośrednio na forum w znacznikach code to ktoś zechcę się temu przejrzeć.

0

pobieranieDanych.h:

 
#pragma once
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include "logowanie.h"
#pragma hdrstop
using namespace std;
class pobieranieDanych : public logowanie
{
	
public:
	int isrodki;
	string imieNazwisko, srodki, nrKonta;
	fstream myfile;
	pobieranieDanych(void);
	~pobieranieDanych(void);
	string imie(string pin);
	string nr();
	string kasa();
	int zamianaSrodkow1();
};

pobieranieDanych.cpp:

#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include "pobieranieDanych.h"
#include "logowanie.h"
#pragma hdrstop
using namespace std;

pobieranieDanych::pobieranieDanych(void)
{
}

pobieranieDanych::~pobieranieDanych(void)
{
}

string pobieranieDanych::imie(string pin)
{
	myfile.open(pin, ios::in);
	getline (myfile, imieNazwisko);
	getline (myfile, srodki);
	getline (myfile, nrKonta);
	myfile.close();

	cout << imieNazwisko<< endl;
	return imieNazwisko;
}

string pobieranieDanych::nr()
{
	myfile.open(pin, ios::in);
	getline (myfile, imieNazwisko);
	getline (myfile, srodki);
	getline (myfile, nrKonta);
	myfile.close();
	cout << nrKonta<< endl;
	return nrKonta;	
}

string pobieranieDanych::kasa()
{
	myfile.open(pin, ios::in);
	getline (myfile, imieNazwisko);
	getline (myfile, srodki);
	getline (myfile, nrKonta);
	myfile.close();
	cout << srodki<< endl;
	return srodki;
}

int pobieranieDanych::zamianaSrodkow1()
{	
	istringstream iss(srodki);		//Zamiana stringa
	iss >> isrodki;	
	return isrodki;
}
 

logowanie.h:

 
#pragma once
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#pragma hdrstop
using namespace std;

class logowanie
{
public:
	string pin;
	logowanie(void);
	~logowanie(void);
	bool zaloguj();
	int wybor();
	string podawaniePIN();
	int noweKonto(void);
	string int_tab_na_string(int tab[], int rozmiar);
};

logowanie.cpp:

 
#include "logowanie.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

logowanie::logowanie(void)
{
}

logowanie::~logowanie(void)
{
}

bool logowanie::zaloguj()
{
		////// LOGOWANIE //////
	bool done;
	ifstream fileCheck;
    int i=2;
	
	fileCheck.open(pin); //Sprawdzanie czy plik istnieje oraz błedne podawanie pinu
	done = true;
	
	while  (!fileCheck) 
	{
		if(i!=0)
		{
			cout << "Podales bledny pin" << endl;
			cout <<"Pozostalo prob: "<< i << endl << endl;
			fileCheck.close();
			cout << "Podaj pin: ";
			cin >> pin;
			pin = pin + ".txt";
			fileCheck.open(pin);
			i--;	
		}

		if(i == 0)
		{			
			done=false;
			break;
		}
	}		  
	fileCheck.close();
	return done;
}

string logowanie::podawaniePIN()
{
	cout << "Podaj pin: ";
	cin >> pin;
	pin = pin + ".txt";
	cout << pin << endl;
	return pin;
}
0

Błąd masz 753 linijce pliku w którym siedzi main. Zgadłem ?
Zdecydowanie coś robisz źle w tym main którego nie podałeś.
Tu jedynie co mnie razie to fileCheck.open(pin); powinno być: fileCheck.open(pin.c_str()); nie zostawiaj dziwnych rzeczy na laskę kompilatora.

0

To wszystko kompiluje się bez błędów tylko zamiast pobierać linie z pliku w którym jest tekst to on pobiera (tzn, nie wiem czy to robi) bo wyświetla się pusta linia.

to jest main :

int main()
{

	//string pin, imieNazwisko, nrKonta, srodki;
	logowanie logowanie;
	menu oknoMenu;
	pobieranieDanych dane;
	int wybor, wybor1, isrodki;
	bool check;

	logowanie.podawaniePIN();
	check = logowanie.zaloguj();
	if(check  == false)
	{
		cout<<"KARTA ZABLOKOWANA"<<endl;
		return 0;
	}
	dane.imie();
	dane.kasa();
	dane.nr();
system("PAUSE");
}
 

I tam w klasie pobieranieDanych w metodzie imię powinno być:

 string imie();
0

Przeciez masz dziedziczenie!

        pobieranieDanych dane;
 
        dane.podawaniePIN();
        if(dane.zaloguj())
        {
                cout<<"KARTA ZABLOKOWANA"<<endl;
                return 0;
        }
        dane.imie(dane.pin);
        dane.kasa();
        dane.nr();
0

a rzeczywiście:) myślałem ze muszę do każdej klasy odnosić się osobno, a nie że z jednej mogę do wszystkich. Temat do zamknięcia. I dziękuje za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1