gpt4 book ai didi

c++ - 最佳实践 : Passing a Vector of a Derived Class to a Method on a Vector of a Base Class

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

这是一个“最佳实践”问题:我可以想到几种方法,但我想知道社区认为哪种方法最好。

我有一个方法如下:

void Foo(std::vector<BaseClass>& Objects) {...}

我现在想在 Objects 上调用这个方法这是一个std::vector<DerivedClass> .

我可以想到,例如,使用模板,或将 Sort 转换为 std::vector<BaseClass*>然后传递 (Objects.begin(), Objects.end()) .

提前致谢。

最佳答案

如果您需要动态多态性,您可以考虑 std::shared_ptr、std::unique_ptr 或包含指向(内部)多态类的指针的类。换句话说,“std::vector< BaseClass* >”非常丑陋。

如果您使用静态多态性(模板),排序也将成为模板。

关于c++ - 最佳实践 : Passing a Vector of a Derived Class to a Method on a Vector of a Base Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21532622/

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