witam w klasie mam 3 zmienne i chce zrobić tak by te zmienne miały przypisane w metodzie wartosci z pliku. Ale by miał do nich dostęp z każdej innej klasy i bym mógł je wypisać w main. Dowiedziałem się o czymś takim jak extern ale jakoś w main nie działa?
main.cpp
#include "open_file.h"
#include <iostream>
#include <fstream>
//extern double budget;
int main()
{
Open_file my_file;
extern double budget;
std::cout << "mamy tyle pieniedzy: " << budget << std::endl;
return 0;
}
open_file.h
#ifndef OPEN_FILE_H
#define OPEN_FILE_H
#include <fstream>
#include <iostream>
class Open_file
{
public:
std::fstream my_file;
double budget = {};
double smart_saver_mateusz = {};
double smart_saver_justyna = {};
Open_file();
// ~Open_file();
void save_data_to_variables();
void close_my_file();
};
#endif // OPEN_FILE_H
open_file.cpp
#include "open_file.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
Open_file::Open_file()
{
std::cout << "sprawdzamy czy plik sie odtworzy" << std::endl;
my_file.open( "dane.txt" , std::ios::in );
if ( my_file.is_open() == true)
std::cout << "Uzyskano dostep do plik" << std::endl;
else
{
std::cerr << "Nie mozna otworzyć pliku" << std::endl;
exit( EXIT_FAILURE );
}
save_data_to_variables();
close_my_file();
}
//===============================================================================
void Open_file::save_data_to_variables()
{
std::cout << "Dodanie wartosci z pliku" << std::endl;
std::string line = {};
int number_line = 1;
while ( std::getline( my_file , line ) )
{
switch ( number_line )
{
case 1: budget = atoi(line.c_str()) ; break;
case 2: smart_saver_mateusz = atoi(line.c_str()); break;
case 3: smart_saver_justyna = atoi(line.c_str()); break;
}
++number_line;
}
}
//===============================================================================
void Open_file::close_my_file()
{
my_file.close();
std::cout << "cos tam";
std::cout << "mamy tyle pieniedzy: " << budget << std::endl;
}