我创建了一个类型,它是一个字符串优先级队列列表(这不是我的想法,我必须这样做):
typedef list<priority_queue<string>> L;
L myList;
现在我需要创建一个名为M的类,它将从此类型继承。据我所知,我需要使用模板来实现,但我仍然不知道如何做,而且我在网上没有找到任何信息。
如何使一个类继承自一个类型?
typedef list<priority_queue<string>> L;
L myList;
现在我需要创建一个名为M的类,它将从此类型继承。据我所知,我需要使用模板来实现,但我仍然不知道如何做,而且我在网上没有找到任何信息。
如何使一个类继承自一个类型?
class foo : L { // Note this is private inheritance
};
类型别名只是另一种类型的名称,而不是它本身的类型。由于std::list
是一个类模板,而L
命名了一个完整的特化,所以您可以这样做。
只要确保不以任何涉及删除指向std::list
的指针的多态方式使用它。它没有设计虚构函数,因此不适合这种情况。
L t=new foo(); t->thing(); delete t;
,因为列表没有虚析构函数 :( - UKMonkeyfoo
中,就像为任何类一样。由于 foo
也是一个 L
,因为继承的原因,你可以在 foo
上调用任何 std::list
函数。 - StoryTeller - Unslander Monica
std::list
、std::priority_queue
和std::string
,还是你自己的版本?如果是前者,那么为什么需要继承它们呢?从标准库类型继承并不违法,但很多人似乎认为这是一个坏主意。而且为什么你会遇到麻烦;这应该与任何其他继承没有区别。 - Daniel HL
继承。 - MikeMBL
,至少像QueueContainer
这样的名称可以告诉你它包含了队列。 - Daniel H