c++中一个类的对象作为另一个类的属性时怎么弄。

时间:2022-08-04 20:03:59
比如你定义了一个date类。
date类的实例有作为people类的属性。在编写people的构造函数时,
我这样弄,结果报错。请教高人该怎么弄?
构造函数:
people(date date1){

    birthday=date1;
}
其中birthday也是date型的。
编译时会告诉我date类没有定义无参构造函数。

11 个解决方案

#1


复制构造函数,是这么用的么,要声明为引用吧date &date1

#2


date没有无参构造函数,是不是写了带参的构造函数?
加个无参的就应该可以了

#3


创建一个健壮安全的类时需要为类写不少函数,其中至少需要有
默认构造函数、析构函数、拷贝构造函数、赋值运算符重载等。
当然具体情况具体对待,比如data类
data(data& mydata);                  // Constructor
data();                              // Default constructor
data(data&);                         // Copy constructor
data& operator=(const data&);        // Assignment operator

#4


那就请定义一个无参构造函数

#5


需要写一个拷贝构造函数,不然编译器怎么知道你的data类的实例如何复制

#6


引用 5 楼 iwknow 的回复:
需要写一个拷贝构造函数,不然编译器怎么知道你的data类的实例如何复制
我记得拷贝构造函数编译器会自动实现啊?

#7


是不是要定义date& operator=(date&) 

#8


无拷贝构造函数,就去"=",肯定有问题

#9


引用 2 楼 fengzuiye 的回复:
date没有无参构造函数,是不是写了带参的构造函数?
加个无参的就应该可以了

加个无参的可以,但是无参不行啊,用的时候必须要有参啊

#10


它说没有无参的构造函数,你就加一个啊.

#11


来学习了~!

#1


复制构造函数,是这么用的么,要声明为引用吧date &date1

#2


date没有无参构造函数,是不是写了带参的构造函数?
加个无参的就应该可以了

#3


创建一个健壮安全的类时需要为类写不少函数,其中至少需要有
默认构造函数、析构函数、拷贝构造函数、赋值运算符重载等。
当然具体情况具体对待,比如data类
data(data& mydata);                  // Constructor
data();                              // Default constructor
data(data&);                         // Copy constructor
data& operator=(const data&);        // Assignment operator

#4


那就请定义一个无参构造函数

#5


需要写一个拷贝构造函数,不然编译器怎么知道你的data类的实例如何复制

#6


引用 5 楼 iwknow 的回复:
需要写一个拷贝构造函数,不然编译器怎么知道你的data类的实例如何复制
我记得拷贝构造函数编译器会自动实现啊?

#7


是不是要定义date& operator=(date&) 

#8


无拷贝构造函数,就去"=",肯定有问题

#9


引用 2 楼 fengzuiye 的回复:
date没有无参构造函数,是不是写了带参的构造函数?
加个无参的就应该可以了

加个无参的可以,但是无参不行啊,用的时候必须要有参啊

#10


它说没有无参的构造函数,你就加一个啊.

#11


来学习了~!