我有抽象类A
class A{
public:
A(dim) : dim_(dim);
private:
int dim_;
}
和B级
class B : public A{
public:
B(int dim);
}
我需要为 B 类创建构造函数,它仅在 dim > 1 时有效,否则抛出断言。
在这种情况下
B::B(int dim) : A(dim){
assert(dim > 1);
}
它有效,但我认为这不是一个好的解决方案,因为创建和删除了类 A 的实例。
比我为 A 类创建 init 方法:
class A{
public:
void init(int dim){
dim_ = dim;
}
A(int dim){
init(dim);
}
private:
int dim_;
}
并更改 B 类的构造函数:
class B : public A {
public:
B(int dim){
assert(dim > 1);
init(dim);
}
}
但它不起作用。我的问题有什么可能的解决方案吗?