#include <iostream>
using namespace std;
class DrivingLicence
{
protected:
Person owner;
char * type;
Date validity;
int id;
static int cid;
public:
DrivingLicence(Person &o,char* t,Date &d);
DrivingLicence(Person &o,char* t);
DrivingLicence(const DrivingLicence & other);
Date getValidity() const;
int checkValidity() const;
void print() const;
bool operator== (const DrivingLicence& o) const;
void operator +(const int num);
const DrivingLicence& operator= (const DrivingLicence& other);
~DrivingLicence();
};
class Person
{
private:
int id;
char* name;
Date birthday;
public:
Person(char* name,int id1,Date &d);
Person(const Person &other);
~Person();
Date getBirthday() const;
const Person& operator= (const Person & other);
void print() const;
};
class Date
{
int day;
int month;
int year;
public:
Date (int day,int month,int year);
~Date();
const Date& operator=(const Date& other);
bool operator==(const Date & other);
void print() const;
int getYear()const;
int getMonth()const;
int getDay()const;
};
以上是我的课程,
我需要初始化DrivingLicence
类中的两个构造函数(不是复制缺点),但是我无法做到这一点。
有人可以帮我解决这个问题的语法吗?
我的意思是:
#include <NameOfHeaderFile>
DrivingLicense::DrivingLicense( Person &o,char* t,Date &d ) : //Code here for 1stconstructor
{
}
DrivingLicense::DrivingLicense( Person &o,char* t ) ://Code here for 2nd constructor
{
}
我不知道如何初始化值
答案 0 :(得分:0)
我认为这是一个头文件,但通常每个.h文件只有一个类。因此,您需要创建一个名为DrivingLicence.cpp的文件。
在此文件中写:
#include <NameOfHeaderFile>
DrivingLicense::DrivingLicense( Person &o,char* t,Date &d )
{
//Code here for 1stconstructor
}
DrivingLicense::DrivingLicense( Person &o,char* t )
{
//Code here for 2nd constructor
}
这就是你要问的???
答案 1 :(得分:0)
如果我理解了你的问题,你需要一个DriverLicence
构造函数
还会初始化DriverLicense
实例中的人员。
如果是这样,您只需将此重载添加到您的班级:
DriverLicense::DriverLicense(
// Data for Person
char *person_name, int person_id, Date day_birth,
// Data for Driver licence
char *t, Date d)
{
owner = Person(person_name, person_id, day_birth);
// More code here initializing DeriverLicence members.
}
记住当然要把它添加到你的班级:
class DriverLicence
{
public:
// ...
DriverLicense::DriverLicense(char *, int, Date, char *t, Date d);
// ...
}
一些建议:
std:string
代替char*
答案 2 :(得分:0)
如果您尝试使用传递给构造函数的参数初始化DrivingLicense
类的成员,则可以在初始化列表中执行此操作。
将这些定义放在cpp中是明智的。还要注意对类型和常量的更改或我提供的参数。
DrivingLicense::DrivingLicense(const Person &o, const std::string& t, const Date &d )
: owner(o)
, type(t)
, validity(d)
{ }
DrivingLicense::DrivingLicense(const Person &o, const std::string& t)
: owner(o)
, type(t)
{ } // Note that 'validity' here is default constructed.
答案 3 :(得分:0)
int DrivingLicence :: cid = 1000;
DrivingLicence :: DrivingLicence(Person&amp; o,char * t,Date&amp; d):owner(o),type(t),validity(d) {
}
DrivingLicence :: DrivingLicence(Person&amp; o,char * t):owner(o),type(t),validity(8,10,2024){}
这就是我的意思。 谢谢你的所有答案。