Использование конструктора при передаче массива объектов через композицию

#include <iostream>
#include <cstring>
using namespace std;

class assistantnurse{
private:
char* id;
char dutytime;

public:

assistantnurse(char[] ="", char =' ');
void setid(char*);
void setdutytime(char);
char* getid()const;
char getdutytime()const;
void print()const;
void inputinfo();
~assistantnurse();
};

assistantnurse::~assistantnurse()
{
delete[] id;
id=0;

}

assistantnurse::assistantnurse(char* i, char t)
{
setid(i);
setdutytime(t);
}

void assistantnurse::setid(char *i)
{
int l=strlen(i);
id=new char[l+1];
strncpy(id,i,l);
id[l]='\0';
}

void assistantnurse::setdutytime(char t)
{
dutytime=t;
}

char* assistantnurse::getid()const{return id;}
char assistantnurse::getdutytime()const{return dutytime;}

void assistantnurse::print()const
{
cout<<"ID: "<<id<<endl;
cout<<"Duty time: "<<dutytime<<endl<<endl;
}void assistantnurse::inputinfo()
{
char nurseid[20];
char time;

cout<<"Enter nurse ID: ";
cin>>nurseid;

do
{
cout<<"Enter nurse Duty time(d for day/n for night): ";
cin>>time;
}while(time!='n' && time!='d');

setid(nurseid);
setdutytime(time);
}

class treatingphysician{

private:
char* id;
char* phonenumber;
assistantnurse assistant[2]; //3 assistant nurses through composition from assistantnurse class

public:
void setid(char*);
void setphonenumber(char*);
char* getid()const;
char* getphonenumber()const;
void setnurse();
void getnurse()const;
treatingphysician(char[] =" ", char[] =" ", assistantnurse[]);
~treatingphysician();
void print()const;
void inputinfo();
};

void treatingphysician::inputinfo()
{
char i[20];
char p[15];

cout<<"Enter physician ID: ";
cin>>i;
setid(i);
cout<<"Enter physican phone number: ";
cin>>p;
setphonenumber(p);setnurse();}

void treatingphysician::print()const
{
cout<<"Physician ID: "<<id<<endl;
cout<<"Physician phone number: "<<phonenumber<<endl<<endl;
getnurse();
}

treatingphysician::~treatingphysician()
{
delete[] id;
id=0;
delete[] phonenumber;
phonenumber=0;
}treatingphysician::treatingphysician(char*i, char*p, assistantnurse k[2]):assistant(k)

{
setid(i);
setphonenumber(p);

}

void treatingphysician::setid(char*i)
{
int l=strlen(i);
id=new char[l+1];
strncpy(id,i,l);
id[l]='\0';
}

void treatingphysician::setphonenumber(char*p)
{
int l=strlen(p);
phonenumber=new char[l+1];
strncpy(phonenumber,p,l);
phonenumber[l]='\0';
}

char* treatingphysician::getid()const{return id;}
char* treatingphysician::getphonenumber()const{return phonenumber;}

void treatingphysician::setnurse()
{
for(int i=0;i<3;i++)
{
cout<<"Enter info for nurse #"<<i+1<<endl;
assistant[i].inputinfo();
cout<<"\n";
}
}

void treatingphysician::getnurse()const
{
for(int i=0;i<3;i++)
{
cout<<"Nurse #"<<i+1<<" ";
assistant[i].print();

}
}int main()
{
treatingphysician e;

e.inputinfo();
e.print();system("pause");
return 0;
}

два класса;
Класс медсестры и класс врача;
Врач имеет 3 медсестры и все его атрибуты.
Использование композиции, чтобы исправить это, но я застрял в массиве объектов для 3 медсестер.

Во втором конструкторе я столкнулся с проблемой, с которой я раньше работал над композицией тем же методом, но единственное отличие состоит в том, что это не был массив объектов, используемых в композиции. теперь я застрял .. Пожалуйста, помогите

Краткий пример …

`класс А {

общественности:
А ();
};

класс B {
частный:
A a [2];

общественности:
В (А []);
};

B :: B (A c [2]): a (c) {} `

-2

Решение

Используйте std :: vector вместо необработанных массивов.

class A
{

public:
A();
};
typedef std::vector< A > A_vector;class B
{
private:
A_vector m_a;

public:
B( A_vector av ) : m_a( av )
{
}
};
0

Другие решения


По вопросам рекламы [email protected]