我有
class A{
}
class B : virtual public A{
extra property 1
}
class C : virtual public A{
extra property 2
}
class D : virtual public A{
}
class E : virtual public B, virtual public C, virtual public D{
extra property 3
}
这是我的链表的插入功能:
template <typename T>
class LinkedList {
Node<T> *start;
Node<T> *current;
public:
void insert (T newElement)
{
if ( isEmpty() )
{
insertToStart(newElement);
}
else
{
Node<T> *newNode = new Node<T>;
newNode->info = newElement;
newNode->next = NULL;
current = start;
while (current->next != NULL)
{
current = current->next;
}
current->next = newNode;
}
}
现在我想创建一个链接列表,它将存储B,C和D的所有实例,而不会丢失每个子类的附加属性。如何使用指针实现此目的? 我已经尝试了here提供的解决方案,但它给了我这个错误:获取临时[-fpermissive]的地址。
Linkedlist<A*> list;
B b;
list.insert(&b);
答案 0 :(得分:0)
以下代码用gcc 4.8编译好:
#include <list>
class A
{
};
class B : virtual public A
{
};
int main()
{
std::list<A*> l;
B* b = new B();
l.push_back(b);
B bb;
l.push_back(&bb);
return 0;
}