dzielenie pliku na czesci

0

Witam mam pewien problem probuje przerobic pewien program i wyskakują mi błędy a mianowicie
49 C:\Dev-Cpp\glowny\podzial\main.cpp `dodaj_do_bazy' undeclared (first use this function)
(Each undeclared identifier is reported only once for each function it appears in.)
i to samo z innymi funkcjami, nie wiem za bardzo jak ten problem usunac, proszę o pomoc:

Main:

	
#include <iostream>

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




int main(int argc,char **argv)
{
	
	int znak;	
	
	///przykladowa nazwa bazy danych
	
	argv[1] = "baza.txt";
	
	
	do
	{
	
	
	cout<<"Co chcesz robic ??\n";
	
	cin>>znak;
	
	
	switch(znak)
	{
		case 1:
		{
			int n;
			cout<<"Ile samochodow zapisac w bazie ?\n";
			cin>>n;			
			Samochod *s = new Samochod [n];
			dodaj_do_bazy(argv[1],s,n);
			delete [] s;
			break;
		}
		case 2:
		{
		
			int ile;
			cout<<"Ile samochodow chcesz dopisac do bazy ?\n";
			cin>>ile;	
					
			int roz = rozmiar(argv[1])+ile-1;
			int rozm = rozmiar(argv[1])-1;
			
					
			Samochod *s = new Samochod [roz];
			zpliku(argv[1],s,rozm);
			
			for(int i=rozm;i<roz;++i)
			{
				s[i].numer = i+1;
				cout<<"Podaj marke :\n";
				cin>>s[i].marka;
				cout<<"Podaj model :\n";
				cin>>s[i].model;
				cout<<"Podaj rok produkcji :\n";
				cin>>s[i].rok;
				cout<<"Podaj cene :\n";
				cin>>s[i].cena;
			}
		
			ofstream plik;
			plik.open(argv[1]);
			for(int i=0;i<roz;++i)
			{
				plik<<s[i].numer<<endl;
				plik<<s[i].marka<<endl;
				plik<<s[i].model<<endl;
				plik<<s[i].rok<<endl;
				plik<<s[i].cena<<endl;
				plik<<"\n\n";
			}
			plik.close();
			delete [] s;
			break;
		}
			}
	}while(znak != 0);
	
	
	return 0;
		
    system("PAUSE");
    return EXIT_SUCCESS;
}


Samochod.cpp


#include "samochod.h"


void Samochod::dodaj_do_bazy(char *in,Samochod *s,int n)
{
	ofstream plik;
	plik.open(in);

	for(int i=0;i<n;++i)
	{
		s[i].numer = i+1;
		plik<<s[i].numer<<endl;
		cout<<"Podaj marke :\n";
		cin>>s[i].marka;
		plik<<s[i].marka<<endl;
		cout<<"Podaj model :\n";
		cin>>s[i].model;
		plik<<s[i].model<<endl;
		cout<<"Podaj rok produkcji :\n";
		cin>>s[i].rok;
		plik<<s[i].rok<<endl;
		cout<<"Podaj cene samochodu :\n";
		cin>>s[i].cena;
		plik<<s[i].cena<<endl;
		
		plik<<"\n\n";
	}
	plik.close();
}



int Samochod::rozmiar(char *in)
{
	std::string model , marka;
	int rok , numer;
	double cena;
	
	ifstream plik;
	plik.open(in);
	int rozm = 0;
	
	while(!plik.eof())
	{
		plik>>numer;
		plik>>marka;
		plik>>model;
		plik>>rok;
		plik>>cena;
		
		rozm += 1;
	}
	
	plik.close();
	return rozm;
}

///funkcja wyciagajaca z pliku samochody do tablicy 
void Samochod::zpliku(char *in,Samochod *s,int n)
{
	ifstream plik;
	plik.open(in);
	
	for(int i=0;i<n;++i)
	{
		plik>>s[i].numer;
		plik>>s[i].marka;
		plik>>s[i].model;
		plik>>s[i].rok;
		plik>>s[i].cena;
	}
}

i samochod.h


#ifndef SAMCHOD_H
#define SAMOCHOD_H
class Samochod
{
      public:
	int numer;		   ///   numer w bazie
	std::string marka;
	std::string model;
	int rok;                   ///   rok produkcji
	double cena;
	
	void dodaj_do_bazy(char *in,Samochod *s,int n);
	int rozmiar(char *in);
	void zpliku(char *in,Samochod *s,int n);
};
#endif

0

w main masz napisane:

(...)
#include "samochod.h"
(....)
		case 1:
		{
			int n;
			cout<<"Ile samochodow zapisac w bazie ?\n";
			cin>>n;			
			Samochod *s = new Samochod [n];
			dodaj_do_bazy(argv[1],s,n);                          /// <-------
			delete [] s;
			break;
		}
(....)

podczas gdy zarowno Samochod.cpp

(....)void Samochod::dodaj_do_bazy(char *in,Samochod *s,int n)(...)

jak i samochod.h

(...)
class Samochod
{
      public:
(...)
	void dodaj_do_bazy(char *in,Samochod *s,int n);
	int rozmiar(char *in);
	void zpliku(char *in,Samochod *s,int n);
};

mówią, że 'dodaj_do_bazy' jest metoda klasy Samochod.

Ty w main() uzywasz jej jakby byla zwykla funkcja.
Popraw to, a blędy znikna.
Moze chciales aby ta metoda byla statyczna?

(...)
class Samochod
{
      public:
(...)
static/*<--*/void dodaj_do_bazy(char *in,Samochod *s,int n);
	int rozmiar(char *in);
	void zpliku(char *in,Samochod *s,int n);
};

i potem:

			Samochod *s = new Samochod [n];
		/*--->*/  Samochod::dodaj_do_bazy(argv[1],s,n);
			delete [] s;
1

problem rozwiazany dziękówa ;)

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