类组合中的构造函数错误
error in constructor in class composition
当我编写具有其他类对象的类的构造函数时,如下例所示,我得到编译错误error: no matching function for call to 'A::A()'
class A {
int x;
public:
A(int _x) {
this->x=_x; } };
class B {
A obj;
public:
B(int x) {
obj=A(x); } };
int main(){}
我知道通过添加没有参数的 A 构造函数(如 A(){}
(,我会解决问题,但是还有另一种方法可以在不引入新构造函数的情况下解决问题?
p.s.:我知道使用指向 A 的指针而不是类 A 的对象可以解决,但我想知道是否有办法保留该对象。
使用成员初始值设定项列表。
对于无法默认初始化的成员(如引用和常量限定类型的成员(,必须指定成员初始值设定项。
class B {
A obj;
public:
B(int x) : obj(x) {}
};
对于代码,obj
将首先默认初始化,然后在构造函数的主体中分配。 A
不能默认初始化;这会导致错误。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- STL向量上出现奇怪的复制构造函数错误
- C++ 乘法定义的构造函数错误消息似乎错误
- 通过构造函数错误地播种梅森扭曲
- C++ 多态构造函数错误;标识符未定义
- 类组合中的构造函数错误
- C++中的构造函数错误
- 构造函数错误:错误:数字常量之前的预期“”,“”或“..”
- 这个奇怪的复制构造函数错误抱怨的是什么
- Singleton子类构造函数错误
- 默认构造函数错误 (C++)
- 基类构造函数错误
- 初始化列表构造函数错误带有CRTP
- C++可能存在写入位置的构造函数错误冲突
- 构造函数错误:需要标识符
- 复制构造函数错误:对象的类型限定符与成员函数不兼容