[c++] fstream w main działa w klasie nie

0

mam plik klasa.cpp , w którym mam "dołączone" pliki

#include <iostream>
#include <fstream>
#include "klasa.h"

W pliku klasa.h mam klase, w której w "private" zdefiniowałem sobie strumień

fstream plik;

I kompilator wywala że fstream nie jest typem

Gdy robie to bez klasy to jest wszystko ok
( tzn. tworze strumień np. w main.cpp )
main.cpp

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
     fstream plik;
}
0

Spróbuj tak:

std::fstream plik;
0

A próbowałeś wpisać do pliku klasa.h

#include <fstream>
0

Próbowałem tego i tego

dodanie std:: podziałało cześciowo, bo teraz wypluwa że field plik ma niekompletny typ

0

Ja nie chce używać konstruktora.

Wygląda to tak że w private sobie definiuje fstream plik;
I mam funkcje której przesyłam nazwe pliku i ona go otwiera.

przykład;

class klasa
{
    fstream plik;
public:
   void funkcja(char * nazwa)
{ 
plik.open(nazwa);
plik.close();
}
0
#include <iostream>
#include <fstream>
#include <string>

class klasa
{
	std::fstream plik;

public:
	
	klasa()
	{}
	
	void pisz(std::string str)
	{
		plik.open("plik.txt", std::ios::out);
		
		plik << str;
		
		plik.close();
	}
};

int main()
{
	using namespace std;
	
	klasa k;
	
	k.pisz("test");
	
}

Masz jeszcze jakieś dziwne problemy?

0

Już wiem co robiłem źle

#include <fstream>

dodawałem do klasa.cpp, a w main nie

0

ty nie wewalaj tego w main, tylko czytaj co ludzie do ciebie piszą! @#$@ przecież BAT ci powiedział, żeby do klasa.h wstawić
#include <fstream>

0

Tylko że w klasa.h nie działało !

0

Jeśli można wiedzieć, to jakiego kompilatora używasz?

0

gcc version 4.1.2

0

Eeee, cudów nie ma, są tylko umiejętni inaczej...

klasa.h

#ifndef KLASA_H
#define KLASA_H

#include <fstream>
#include <string>

class MojaPie___Klasa {
    private:
        std::fstream jakisKu___plik;

    public:
        void otwieraj___JUZ(const std::string& tegoPlika);
        void aPiszSeTo(const std::string& toWlasnie);
    };

#endif

klasa.cpp

#include "klasa.h"

using namespace std;

void MojaPie___Klasa::otwieraj___JUZ(const string& tegoPlika) {
    jakisKu___plik.open(tegoPlika.c_str(), ios::in | ios::out);
    }

void MojaPie___Klasa::aPiszSeTo(const std::string& toWlasnie) {
    if(!jakisKu___plik.is_open()) throw "a dupa! do zamknietego plika nie bede!";
    jakisKu___plik << toWlasnie;
    }

main.cpp

#include "klasa.h"

using namespace std;

int main() {
    string Jaajo = "#$%^";
    MojaPie___Klasa pliiik;
    pliiik.otwieraj___JUZ("xxxxx.txt");
    pliiik.aPiszSeTo(Jaajo);
    return 0;
    }

ps. ja naprawdę jestem miły i chcę pomóc. po prostu to co napisałem (i co mi się pod GCC ileś-tam kompiluje) mogłeś sam napisać na podstawie rad osób które pisały wcześniej. Nie wiem dlaczego tego nie zrobiłeś, stąd styl tego posta wygląda tak a nie inaczej.

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