我不确定你会怎么想这会起作用。 C ++没有反射,所以你无法迭代它的类成员并检查它们的类型。所以,对不起,我不知道所有可能。您当然可以使用一些变通方法,例如直接简单地使用底层基本向量而不是将两个描述符声明为成员变量(您有什么理由需要吗?)然后在Base构造函数中隐式传递它们,但是您要做什么?重新瞄准是不可能的。
编辑:显然它可能有一些黑暗巫毒魔法,请参阅下面的评论。
是的,至少在C ++ 14中有一种直接做你所要求的方法,但它涉及一堆黑暗伏都教。在本次C ++ 2018会议中的讨论:
更好的C ++ 14反思 - Antony Polukhin
Antony解释了如何能够遍历结构的所有成员并访问其类型。他使用它在某些输出流上打印值,但您可以使用相同的方法将地址推回到 std::vector<MyDescriptor*> 。
std::vector<MyDescriptor*>
话虽如此 - 我认为你应该避免这种模式。只需创建一个MyDescriptors矢量,然后使用它的引用。为什么要使用需要如此多扭曲才能生成的指针向量?