我正在使用 C++ 进行编程,无法弄清楚如何访问父类中的 STL 容器。我有以下类(class):
class Card
class CardPile : private vector<Card*>
class Deck : public CardPile{Foo()}
我知道如果 Foo()
在 CardPile 类中,我可以使用 size()
调用 vector 的大小。我如何从 Foo()
调用 vector 的 size()
函数。
编辑:不幸的是,我不允许更改任何类定义
最佳答案
size()
是 CardPile
的私有(private)方法,但如果适合设计,您可以将其公开或 protected :
class CardPile : private std::vector<Card*>
{
public: // or protected
using std::vector<Card*>::size;
};
这将允许您调用 size()
要么无处不在(公共(public)),要么来自派生类( protected )。
但请记住,标准库容器并不是设计来继承的,特别是公开继承的。所以你可以改变你的 CardPile
类(class)举办std::vector<Card*>
数据成员。之后,如果您当前正在处理动态分配的Card
,您可以考虑在 vector 中保存智能指针。对象。
class CardPile :
{
public: // or protected
std::vector<Card*>::size_type size() const { return cards_.size(); }
private:
std::vector<Card*> cards_
};
关于c++ - 调用STL容器的内置函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13542678/