>我想知道是否有办法让类/结构中的数组没有确切的设置值,所以当它被继承时,它可能具有与其他结构不同的值。在此示例中:
struct foo
{
virtual int test[];
};
struct bar : foo
{
int test[3];
};
struct bars : foo
{
int test[5]
};
在此示例中,我尝试在 foo
类中定义一个具有 virtual 关键字的新 int 数组。如您所见,bar
的测试数组大小为 3,但在 bars
的测试数组大小为 5。但是,当我尝试将foo
继承给bar
或bars
时,它失败并给了我一个错误:invalid base class
。
编辑:抱歉,我的帖子不太清楚。我试图尽力解释一个未知大小的数组,但不知何故最终得到了一些更令人困惑的东西。另外,对于那些要说使用std::vector
的人,请重新阅读我上面的编辑
吗?更好的是,有没有比数组更有效的东西,它允许从继承的动态数组成为新的静态数组?
在基类中使用 std::vector...并使其受到保护。
不确定您要完成什么。无论如何,您可以使用;
struct foo
{
foo(int* t) : test(t) {}
int* test;
};
struct bar : foo
{
bar() : foo(derived_test) {}
int derived_test[3];
};
不过,使用std::vector<int>
会好得多。
struct foo
{
foo(size_t size) : test(size) {}
std::vector<int> test;
};
struct bar : foo
{
bar() : foo(3) {}
};