1
我的C++程序我有很多類,其中一個成員應該是兩種類型之一,它們具有相同的基類。基類與派生成員的唯一指針
我以爲我可以用指針實現這個,但我沒有得到它的工作。
實施例,例如,假設我們有一個A類與B類的成員B_:
class A{
public:
A(B b): b_{b} {}
private:
B b_;
}
中的B類只有一個功能至極是純虛:
class B{
public:
virtual void print() = 0;
}
現在我有兩個B和I的派生類想要以某種方式更改A,以便它可以容納B1或B2類的八個對象:
class B1: public B{
public:
void print(){cout << "B1\n";}
}
class B2: public B{
public:
void print(){cout << "B2\n";}
}
我的計劃是使用獨特的指針:
class A{
public:
A(std::unique_ptr<B> b): b_{std::move(b)} {}
private:
std::unique_ptr<B> b_;
}
int main(){
std::unique_ptr<B> b;
if (some condition){
b = make_unique<B1>(new B1()) ///?
}else{
b = make_unique<B2>(new B2()) ///?
}
A(b);
A.getB()->print();
}
'b = make_unique(new B1())'??? ... **你的意思是**'b = make_unique ()'? –
WhiZTiM
什麼是錯誤? – MKR