我想知道是否有一种方法可以让类/结构中的数组没有确切的设置值,所以当它继承时,它可能具有与其他结构不同的值。在这个例子中:
struct foo
{
virtual int test[];
};
struct bar : foo
{
int test[3];
};
struct bars : foo
{
int test[5]
};
在这个例子中,我尝试在foo
类中定义一个具有虚拟关键字的新int数组。正如您所看到的,bar
的测试数组的大小为3,但在bars
中,测试数组的大小为5.但是,当我尝试继承{{1}时} foo
或bar
,它失败并给我一个错误:bars
。
编辑:抱歉,我的帖子并不清楚。我试图解释一个未知大小的数组,但不知何故最终出现了一些令人困惑的事情。此外,对于要说使用invalid base class
的人,请重新阅读上面的编辑
答案 0 :(得分:0)
这有解决方法吗?更好的是,是否存在比允许从继承的动态数组成为新静态数组的数组更有效的东西?
在基类中使用std :: vector并使其受到保护。
答案 1 :(得分:0)
不确定您要完成的任务。无论如何,你可以使用;
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) {}
};