我想(unsuccesfully)來創建對象的矢量和使用polimophism無需人工內存管理和任何類型的指針(*的unique_ptr,shared_ptr的,weak_ptr的等)依賴raii成語。使用移動語義和引用的矢量抽象類的兒童
#include <iostream>
#include <vector>
using namespace std;
struct A{
virtual void foo()=0;
virtual ~A(){}
};
struct C:A{
int bar;
C(int bar):bar(bar){}
virtual void foo(){
cout << bar << endl;
}
virtual ~C(){}
};
struct B:A{
vector<A> &&bar;
int f;
B(int f, vector<A> bar):f(f),bar(bar){}
B(int f, vector<A> &bar):f(f),bar(bar){}
B(int f, vector<A> &&bar):f(f), bar(bar){}
virtual void foo(){
cout << f << endl;
for(auto &f: bar){
f.foo();
}
}
virtual ~B(){}
};
int main() {
B b{1, vector<A>{C{1},C{2}}};
b.foo();
return 0;
}
但它不編譯。我做錯了什麼?
什麼是*「'矢量 &&bar;」*「應該是? –
一個rvalue參考 – KOLANICH