我需要一个基类的向量,我看到解决方案的任何地方都将它存储为指针。但是,由于缺乏值语义,存储指针会使事情变得更难使用。
struct base
{
int a = 10;
};
struct derived : public base
{
int b = 5;
};
int main()
{
std::vector<std::reference_wrapper<base>> vec;
vec.push_back(*(new derived));
auto elem = static_cast<derived*>(&vec.at(0).get());
std::cout << elem->b << std::endl; // prints 5
return 0;
}
将它们存储为std::reference_wrapper
是否有任何缺点?