Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Klasy, metody, podstawy

Ostatnio zmodyfikowano 2017-03-18 16:30
Autor Wiadomość
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)
C/C++
#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
C/C++
#include<string.h>
#include<iostream>
#include<fstream>
std::fstream plik;


class Logger {
    std::ifstream plik;
public:
    Logger( std::string nazwaPliku ) //konstruktor otwierajacy plik
    {
        plik.open( nazwaPliku, std::ios::app | std::ios::out ); //blad
    }
    ~Logger()
    {
        plik.close(); //destruktor zamykajacy plik
    }
   
    void Dopisz( std::string wyraz ) //metoda dopisujaca w nowej lini otwartego pliku jakis wyraz
    {
        if( plik.good() == true )
        {
            std::cout << "Udalo sie otworzyc plik\n";
            plik << "\n" << wyraz; //blad
        }
    }
   
} nowyplik; //blad
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
P-159097
carlosmay
» 2017-03-18 15:37:32
Ten kod wyrzuca błędy, prosiłbym o wskazówki
Jakie błędy? Będzie łatwiej zdiagnozować.
P-159099
pekfos
» 2017-03-18 15:50:38
C/C++
plik.open( nazwaPliku, std::ios::app | std::ios::out ); //blad
nazwaPliku.c_str().

C/C++
} nowyplik; //blad
Nie masz konstruktora, który nie przyjmuje żadnych argumentów.

C/C++
plik << "\n" << wyraz; //blad
plik to std::ifstream, nie możesz do niego niczego zapisać.

C/C++
nowyplik.Logger( nazwaPliku );
Nie możesz tego zrobić.
P-159102
andrzejek97
Temat założony przez niniejszego użytkownika
» 2017-03-18 15:56:52
C/C++
#include<string.h>

#include<iostream>
#include<fstream>
std::fstream plik;


class Logger {
    std::ifstream plik;
public:
    Logger( std::string nazwaPliku ) //konstruktor otwierajacy plik
    {
        plik.open( nazwaPliku, std::ios::app | std::ios::out ); //blad no matching function for call to 'std::basic_ifstream<char,                                //std::char_traits<char> >::open(std::string&, std::_Ios_Openmode)
    }
    ~Logger()
    {
        plik.close(); //destruktor zamykajacy plik
    }
   
    void Dopisz( std::string wyraz ) //metoda dopisujaca w nowej lini otwartego pliku jakis wyraz
    {
        if( plik.good() == true )
        {
            std::cout << "Udalo sie otworzyc plik\n";
            plik << "\n" << wyraz; //blad no match for 'operator<<' in  '((Logger*)this)->Logger::plik << "\012"'
        }
    }
   
} nowyplik; //blad no matching function for call to 'Logger::Logger()'
int main()
{
    std::string nazwaPliku;
    std::cout << "Podaj nazwe pliku\n";
    std::cin >> nazwaPliku;
    nowyplik.Logger( nazwaPliku ); //blad invalid use of 'class Logger'
    std::string costam;
    std::cin >> costam;
    Dopisz( costam ); // blad 'Dopisz' was not declared in this scope
    return 0;
}
P-159105
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
P-159109
pekfos
» 2017-03-18 16:30:30
Jakoś ten problem rozwiązałeś w pierwszym kodzie..
P-159111
« 1 »
  Strona 1 z 1