【发布时间】:2025-12-04 04:10:02
【问题描述】:
我担心这是一个非常基本的问题,但是我还没有解决它。
我有一个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 A 的实例作为class B 中的对象?这将如何实现?
【问题讨论】:
-
请注意,A 类的默认构造函数从未使用过 -- 使用您当前的代码,它在此处使用:
ClassA _objectA;即使您不是故意的这样做。
标签: c++ constructor instance-variables default-constructor