gpt4 book ai didi

c++ - 调用STL容器的内置函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:46 24 4
gpt4 key购买 nike

我正在用 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类举行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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com