【发布时间】:2021-12-10 15:03:29
【问题描述】:
类是否可以声明一个数组,该数组可以在派生类中被不同长度的数组覆盖?我知道我可以只使用 std::vector ,但它适用于游戏引擎的性能关键阶段,并且由于在编译时长度是已知的,因此似乎应该可以静态地进行。
我的目标是这样的,但没有虚拟和静态成员变量的不可能要求:
struct F {
virtual static const size_t n;
Signal[n] inputs;
Signal getInput(size_t i)
{
if(i<n)
return inputs[i];
}
};
struct Binary : F {
static const size_t n=2;
};
【问题讨论】:
-
没有。不可能,但是您可以使 Base 类成为具有数组大小的模板并以您想要的大小继承它。
-
没有。在 C++ 中,所有类型都必须具有恒定大小。
-
没有所谓的“虚拟”成员变量。您如何确定
std::vector不够快? -
不允许使用虚拟成员变量。而且您对数组使用了错误的语法。并且您尝试在变量
n初始化之前使用它。看来您可能需要多花些时间在some good books 上。 -
关于向量不够快,你是如何测量的?你有测量过吗?