gpt4 book ai didi

C++ 返回泛型类型集合的正确方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:21 25 4
gpt4 key购买 nike

我是 C++ 的新手,不幸的是我无法停止使用 C#(我以前的语言)进行思考。我阅读了一些书籍、论坛和 C++ 引用网站,但找不到我的问题的答案,所以我想我不妨在这里尝试一下,然后再放弃并写一些丑陋的东西。

好了,我们可以开始了。我有一个带有抽象方法 succesorsFunction 的类,我希望它返回指向 State 的指针集合。我不想强制实现者使用特定的容器;我宁愿让他们选择( vector 、列表等)。

所以看起来像这样:

class Problem
{
public:
virtual list<const State*>::iterator succesorsFunction(const State &state, list<const State*>::iterator result) const = 0;
};

这里的问题是列表的显式使用。你是如何用 C++ 实现的?

想过用模板,后来遇到了两个问题:1)似乎你不能用抽象方法来做(或者我错了吗?)2) 如何告诉模板它应该包含指向 State 的指针?

最佳答案

您不能在 C++ 中根据返回类型重载方法。

此外,C++ 中的“容器”没有相同的基数(如 Java 中的 Collection),因此您无法返回通用容器。

恐怕没有干净的方法可以做到这一点。

我只会编写重载(通过参数)或不同的函数名称。

对于您的问题:

1) 你可以。是什么让您认为自己做不到?

2) 与声明 list 的方式相同: list<const State*> - const是可选的。

关于C++ 返回泛型类型集合的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440298/

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