Klasy, metody, podstawy
Ostatnio zmodyfikowano 2017-03-18 16:30
andrzejek97 Temat założony przez niniejszego użytkownika |
Klasy, metody, podstawy » 2017-03-18 15:30:54 Witam, mam problem z programem napisanym obiektowo(dopiero zaczynam naukę w tym kierunku), napisałem program najpierw w zwykły sposób wykorzystując funkcje, program ten działa, problem pojawił się, gdy chciałem go przerobić tak by wykorzystać klasy, oto kod bez wykorzystania klas (działa) #include<fstream> #include<string.h> #include<iostream> std::fstream plik; void Dopisz( std::string wyraz ) { if( plik.good() == true ) { plik << "\n" << wyraz; plik.close(); } } int main() { plik.open( "moje.txt", std::ios::app | std::ios::out ); std::string komunikat; std::cin >> komunikat; Dopisz( komunikat ); return( 0 ); }
a oto kod z wykorzystaniem klas #include<string.h> #include<iostream> #include<fstream> std::fstream plik;
class Logger { std::ifstream plik; public: Logger( std::string nazwaPliku ) { plik.open( nazwaPliku, std::ios::app | std::ios::out ); } ~Logger() { plik.close(); } void Dopisz( std::string wyraz ) { if( plik.good() == true ) { std::cout << "Udalo sie otworzyc plik\n"; plik << "\n" << wyraz; } } } nowyplik; int main() { std::cout << "Podaj nazwe pliku\n"; std::cin >> nazwaPliku; nowyplik.Logger( nazwaPliku ); std::string costam; std::cin >> costam; Dopisz( costam ); return 0; }
Ten kod wyrzuca błędy, prosiłbym o wskazówki |
|
carlosmay |
» 2017-03-18 15:37:32 Ten kod wyrzuca błędy, prosiłbym o wskazówki |
Jakie błędy? Będzie łatwiej zdiagnozować. |
|
pekfos |
» 2017-03-18 15:50:38 plik.open( nazwaPliku, std::ios::app | std::ios::out );
| nazwaPliku.c_str(). Nie masz konstruktora, który nie przyjmuje żadnych argumentów. plik to std::ifstream, nie możesz do niego niczego zapisać. nowyplik.Logger( nazwaPliku );
|
Nie możesz tego zrobić. |
|
andrzejek97 Temat założony przez niniejszego użytkownika |
» 2017-03-18 15:56:52 #include<string.h>
#include<iostream> #include<fstream> std::fstream plik;
class Logger { std::ifstream plik; public: Logger( std::string nazwaPliku ) { plik.open( nazwaPliku, std::ios::app | std::ios::out ); } ~Logger() { plik.close(); } void Dopisz( std::string wyraz ) { if( plik.good() == true ) { std::cout << "Udalo sie otworzyc plik\n"; plik << "\n" << wyraz; } } } nowyplik; int main() { std::string nazwaPliku; std::cout << "Podaj nazwe pliku\n"; std::cin >> nazwaPliku; nowyplik.Logger( nazwaPliku ); std::string costam; std::cin >> costam; Dopisz( costam ); return 0; }
|
|
andrzejek97 Temat założony przez niniejszego użytkownika |
» 2017-03-18 16:19:58 plik to std::ifstream, jak mam więc zapisać coś do tego pliku, jestem z tego bardzo słaby, ale mam zadanie do wykonania i stąd te pytania |
|
pekfos |
» 2017-03-18 16:30:30 Jakoś ten problem rozwiązałeś w pierwszym kodzie.. |
|
« 1 » |