我有抽象類A覆蓋構造函數C++
class A{
public:
A(dim) : dim_(dim);
private:
int dim_;
}
和B類
class B : public A{
public:
B(int dim);
}
,我需要爲B類,只有當朦朧> 1,並拋出斷言,否則其工作的構造。
在這種情況下B::B(int dim) : A(dim){
assert(dim > 1);
}
它的工作原理,但它不是很好的解決方案,我認爲,這是因爲A類的實例被創建和刪除
。
比我做A類初始化方法:
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);
}
}
,但它不工作。我的問題有沒有可能的解決方案?
class'A' is not _abstract _... –
不知何故,我覺得依賴'暗'你ctor的感覺是錯誤的方法。 –