我担心这是一个非常基本的问题,但是我还无法解决它。
我有一个class A
// classA.h
...
class ClassA {
public:
ClassA();
ClassA(int foo);
private:
int _foo;
...
}
// classA.cpp
ClassA::ClassA() {
_foo = 0;
}
ClassA::ClassA(int foo) {
_foo = foo;
}
...
一秒class B
使用一个实例class A
在构造函数中:
// classB.h
...
#include "classA.h"
#define bar 5
class ClassB {
public:
ClassB();
private:
ClassA _objectA;
...
}
// classB.cpp
ClassB::ClassB() {
_objectA = ClassA(bar);
}
...
请注意,默认构造函数class A
从未使用过。事实上,在我的现实世界用例中,使用任何类型的默认构造函数都没有意义_foo
必须动态分配。
但是,如果我删除默认构造函数,编译器将返回错误:
没有匹配的函数来调用“ClassA::ClassA()”
有没有办法使用实例class A
作为一个对象class B
没有定义默认构造函数class A
?这将如何完成?
默认构造函数ClassA
用来。ClassB
's _objectA
用它初始化并且then你分配ClassA(bar)
to it.
您可以使用以下方法解决您的问题构造函数初始值设定项列表 http://en.cppreference.com/w/cpp/language/initializer_list:
ClassB::ClassB() : _objectA(bar)
{}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)