C++ kodumda hata: no overloaded function takes 3 parameters

moonlife1

New member
Bir hastaneye tedavi için gelen hastaların kaydını tutan bir c++ kodu yazmam gerekiyordu. Gerekli bütün fonksiyonları hazırladım, menüyü de tamamladım. Bütün hataları düzelttim ancak sadece 1 hata kaldı:
error C2661: 'CPacient::CPacient' : no overloaded function takes 3 parameters
Visual C++ 6.0 ile derledim. Saatlerce uğraştım ancak bu hatayı çözemedim. Parantez içindeki 3 değişkeni sildiğimde derleme tamamlanıyor ancak bu sefer de menü içindeki diğer fonksiyonlar çalışmıyor.

Kod uzun gelebilir, ancak hata sadece birkaç satır ile alakalı. Anlıyorsanız fazla vaktinizi almaz. Yardım ederseniz çok sevinirim.




Kod:
#include<iostream>
#include<vector>
#include<string>
#include<conio.h>
#include<algorithm>
using namespace std;

class CPacient
{
	string zaboliavane;
	int poseshtenia;
public:
	CPacient(string zaboliavane,unsigned poseshtenia)
	{
		zaboliavane = zaboliavane;
		poseshtenia = poseshtenia;
	}
	CPacient(const CPacient &cc)
	{
		zaboliavane = cc.zaboliavane;
		poseshtenia = cc.poseshtenia;
	}
	string getzaboliavane() const
	{
		return zaboliavane;
	}
	unsigned getposeshtenia() const
	{
		return poseshtenia;
	}
	void setzaboliavane(string zaboliavane)
	{
		zaboliavane = zaboliavane;
	}
	void setposeshtenia(unsigned poseshtenia)
	{
		poseshtenia = poseshtenia;
	}
	unsigned carOld()
	{
		return 2007-poseshtenia;
	}
	CPacient &operator=(const CPacient &cc2)
	{
		zaboliavane = cc2.zaboliavane;
		poseshtenia = cc2.poseshtenia;
		return *this;
	}
	void output(ostream& stream)
	{
		stream<<zaboliavane<<", "<<poseshtenia<<endl;
	}
	void input(istream& stream)
	{
		stream>>zaboliavane>>poseshtenia;
	}
	friend ostream &operator<<(ostream& stream,CPacient cc);
	friend istream &operator>>(istream& stream,CPacient &cc);
};

istream &operator>>(istream& stream,CPacient &cc)
{
	cc.input(stream);
	return stream;
}

ostream &operator<<(ostream& stream,CPacient cc)
{
	cc.output(stream);
	return stream;
}
int operator<(CPacient c1,CPacient c2)
{
	return c1.getposeshtenia()<c2.getposeshtenia();
}

int operator==(CPacient c1,CPacient c2)
{
	return c1.getposeshtenia()==c2.getposeshtenia();
}

class PacientInfo: public CPacient
{	
	string ime;
	string dispanseriziran;
	unsigned sbl;
public:

	PacientInfo():CPacient("","",0)
	{
		ime = "";
		dispanseriziran = "";
		sbl = 0;
	}
	PacientInfo(string ime,string dispanseriziran,unsigned sbl,string zaboliavane,unsigned poseshtenia):CPacient(zaboliavane, poseshtenia)
	{
		ime = ime;
		dispanseriziran = dispanseriziran;
		sbl= sbl;
	}
	string getime()
	{
		return ime;
	}
	string getdispanseriziran() const
	{
		return dispanseriziran;
	}
	unsigned getsbl()
	{
		return sbl;
	}
	PacientInfo &operator=(const PacientInfo &cc2)
	{
		ime = cc2.ime;
		dispanseriziran = cc2.dispanseriziran;
		sbl = cc2.sbl;
		setposeshtenia(cc2.getposeshtenia());
		setzaboliavane(cc2.getzaboliavane());
		return *this;
	}
};
bool operator<(PacientInfo c1,PacientInfo c2)
{
	return c1.getposeshtenia()>c2.getposeshtenia();
}


void sorts(vector<PacientInfo>& v)
{
	sort(v.begin(),v.end());
	for(register int i = 0;i<v.size();i++)
	{
		cout<<v[i].getime()<<" "<<v[i].getzaboliavane()<<endl;
	}
}
void dispanseriziranPacient(vector<PacientInfo> v,string dispanseriziran)
{
	for(register int i = 0;i<v.size();i++)
	{
		if(v[i].getdispanseriziran()==dispanseriziran)
		{
			cout<<"Ime:"<<v[i].getime()<<" "<<"Sumata na bezplatni lekarstva: "<<v[i].getsbl()<<endl;
		}
	}
}
void maxPoseshtenia(vector<PacientInfo> &v)
{
	int max = v[0].getposeshtenia();
	int tempI = 0;
	for(register int i = 0;i<v.size();i++)
	{
		if(max<v[i].getposeshtenia())
		{
			max = v[i].getposeshtenia();
			tempI = i;
		}
	}
	cout<<"Pacientyt koito e s nai goliam broi poseshtenia e : "<<max<<" "<<v[tempI].getime()<<endl;
}
void minPoseshtenia(vector<PacientInfo> &v)
{
	int min = v[0].getposeshtenia();
	int tempI = 0;
	for(register int i = 0;i>v.size();i--)
	{
		if(min>v[i].getposeshtenia())
		{
			min = v[i].getposeshtenia();
			tempI = i;
		}
	}
	cout<<"Pacientyt koito e s nai malyk broi poseshtenia e : "<<min<<" "<<v[tempI].getime()<<endl;
}

void Suma(vector<PacientInfo> &v,int a,int b)
{
	for(register int i = 0;i<v.size();i++)
	{
		if(v[i].getsbl()>=a&&v[i].getsbl()<=b)
		{
			cout<<v[i].getzaboliavane()<<": "<<v[i].getsbl()<<" lv."<<endl;
		}
	}
}
int izbor=0;
void menu()
{
	
	do
	{
		cout<<endl<<"******* MENU *******"<<endl<<endl;
		cout<<"1. Vyvejdane na danni"<<endl;
		cout<<"2. Sortirane na pacienti po zaboliavane"<<endl;
		cout<<"3. Max. i min. broi poseshtenia"<<endl;
		cout<<"4. Broja na vsichki dispanserizirani"<<endl;
		cout<<"5. Sortirane po sumite na bezplatnite lekarstva"<<endl;
		cout<<"6. Izhod"<<endl;
		cout<<"Izberete neshto ot menu (1-6) : ";
cin>>izbor;
		cout<<endl;
	}
	while(izbor<1||izbor>6);
}
void main()
{
	int a,i;
	vector<PacientInfo> pt;
	string ime;
	string dispanseriziran;
	unsigned sbl;
	string zaboliavane;
	unsigned poseshtenia;
	do{
		menu();
	switch(izbor)
	{
	case 1:
		{
			cout<<"Za kolko pacienti shte vyvedete dannite?   "<<endl;
			cin>>a;
			for(i=0;i<a;i++)
			{
				cout<<"Vyvedete imeto na pacienta: "<<endl;
				cin>>ime;
				cout<<"Pacientyt dispanseriziran li e? (Vyvedete 'da' ili 'ne')  "<<endl;
				cin>>dispanseriziran;
				cout<<"Vyvedete broja poseshtenia za poslednata godina:  "<<endl;
				cin>>poseshtenia;
				cout<<"Suma na izpisanite bezplatni lekarstva (po Leva) : "<<endl;
				cin>>sbl;
				cout<<"Zaboliavane (imeto na bolestta): "<<endl;
				cin>>zaboliavane;
				PacientInfo ob(ime,dispanseriziran,sbl, zaboliavane, poseshtenia);
			pt.push_back(ob);
			}
			break;
		}
	case 2:
		{
			cout<<"Sortirane na pacientite po zaboliavane:"<<endl<<endl;
			sorts(pt);
			break;
		}
	case 3:
		{
			maxPoseshtenia(pt);
			minPoseshtenia(pt);
			break;
		}
	case 4:
		{
			dispanseriziranPacient(pt,"da");
			break;
		}
	case 5:
		{	
			int a,b;
			cout<<"Bezplatnite lekarstva sys suma pod 100 leva:"<<endl;
			a=0;
			b=100;
			Suma(pt,a,b);
			cout<<"Bezplatnite lekarstva sys suma mejdu 100 i 1000 leva:"<<endl;
			a=101;
			b=1000;
			Suma(pt,a,b);
			cout<<"Bezplatnite lekarstva sys suma nad 1000 leva:"<<endl;
			a=1001;
			b=65535;
			Suma(pt,a,b);
			break;

		}
	
	}
	}while(izbor!=6);
}
 

jokey

New member
Merhaba, kod uzun olduğu için fazla inceleyemedim ama sorunun şu olduğu kanaatindeyim:
CPacient sınıfından türettiğin PacientInfo sınıfına ait şu kurucu fonksiyonda
PacientInfo():CPacient("","",0)
{
ime = "";
dispanseriziran = "";
sbl = 0;
}

CPacient sınıfına ait olan(aslında olmayan) CPacient("","",0) kurucu fonksiyonunu çağırmışsın. işte sorunda tam burada: CPacient sınıfında 3 argüman alan bir kurucu yok. başka sorun olursa yardımcı olmaya çalışırım.
 

HTML

Üst