有没有办法放入一个未定义大小的数组并作为静态数组继承

Is there any way to put in a undefined-sized array and be inherited as a static one?

本文关键字:数组 继承 静态 未定义 一个 有没有      更新时间:2023-10-16

>我想知道是否有办法让类/结构中的数组没有确切的设置值,所以当它被继承时,它可能具有与其他结构不同的值。在此示例中:

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继承给barbars时,它失败并给了我一个错误: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) {}
};