【发布时间】:2017-01-19 07:19:26
【问题描述】:
我正在尝试(未成功)创建对象向量并使用 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;
}
但它不能编译。我做错了什么?
【问题讨论】:
-
"
vector<A> &&bar;" 应该是什么? -
右值引用
标签: c++ class oop move-semantics raii