gpt4 book ai didi

C++ 设计 : subclass, 还是有更好的方法?

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:11 24 4
gpt4 key购买 nike

我有一个 Cheese类(class)。在我的程序中,我处理了很多奶酪的收集,主要是 vector<Cheese>对象。

我希望能够 eat()奶酪系列,像这样:

vector<Cheese> cheeses;
//cheeses = ...
cheeses.eat();

如何做到这一点?如何向 vector<Cheese> 添加新的成员函数类(class)?我应该将 vector<Cheese> 子类化吗?类,命名子类 CheeseCollection并在那里添加成员函数,或者有更好的方法吗?

来自 Objective-C,我习惯于类别,这允许我向类添加函数(“方法”)。类似的东西在 C++ 中可用,还是在 C++ 中疯狂地子类化被认为更自然?

最佳答案

在 C++ 中,您根本不会为此使用成员函数——使用自由函数:

void eat(std::vector<Cheese> const& cheeses) {
// …
}

这与那些 Obj-C 类别非常相似,尽管语法不同(并且您没有使用成员访问权限)。

标准库容器类并未设计为可子类化,因此该方法将失败。你可以做的是使用组合而不是继承——即有一个 CheeseCollection 类,其中包含一个奶酪 vector 作为成员。这可能有一些优势,具体取决于您的整体设计。然而,总的来说,以上是最 C++ic 的解决方案。

关于C++ 设计 : subclass, 还是有更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13673072/

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