我有这个问题:
struct A
{
... some const virtual members ...
};
struct B: A
{
... some const overrides ...
};
struct C
{
C(std::initializer_list<A> const& list) // initialized with instances of B
{
for (auto const& a: list)
{
a.virtual_member_call(); // but struct B overloads do not get called
}
}
};
发生这种情况是因为 B 的实例被复制到 A 的实例中。解决此问题的解决方法是什么(除了从堆中分配)?我想可变参数模板构造函数可能就是其中之一。