我设置了两个类,如下所示
class A
{}
class B : A
{}
并试图使用一个可以容纳A类任何对象的向量或使用指针的派生类型。我试着这样做:
vector<A*> objectsvar;
B var1();
objectsvar[0] = var1;
// Also tried = *var1;
有没有办法做这种事情?有一个容器可以容纳任何类型A或它的派生类而不会丢失任何东西吗?
答案 0 :(得分:1)
是的,你可以这样做。不幸的是,正如评论中已经指出的那样,你试图实现它时犯了几个错误:
join
不会调用默认构造函数,而是声明一个函数。
要向量添加元素,请使用B var1();
(或push_back
,insert
或emplace
)。在您的情况下,下标操作符尝试访问不存在的元素。
要获取变量的地址,请使用emplace_back
。 &
完全相反,它取消引用指针。
你想要的是:
*
答案 1 :(得分:0)
使用统一初始化程序 {}
代替:
B var1{};
在这种情况下说B var1();
声明了一个函数。