【发布时间】:2012-02-25 01:30:45
【问题描述】:
我是 C++ 新手,不幸的是,我无法停止思考 C#(我以前的语言)。 我阅读了一些书籍、论坛和 C++ 参考网站,但我找不到我的问题的答案,所以我想我不妨先在这里尝试一下,然后再放弃并写一些丑陋的东西。
好的,我们可以开始了。 我有一个带有抽象方法 succesorsFunction 的类,我希望它返回一个指向 State 的指针集合。我不想强迫实现者使用特定的容器;我宁愿让他们选择(向量、列表等)。
所以它看起来像这样:
class Problem
{
public:
virtual list<const State*>::iterator succesorsFunction(const State &state, list<const State*>::iterator result) const = 0;
};
这里的问题是列表的显式使用。你在 C++ 中是如何做到的?
我想过使用模板,但后来遇到了两个问题: 1)看起来你不能用抽象方法来做(或者我错了吗?) 2) 如何告诉模板它应该包含指向 State 的指针?
【问题讨论】:
-
Boost.Range 的类型擦除范围在这里可能会有所帮助。
-
你能扩展一下这个功能和它是虚拟应该实现的吗?可能有其他方法。
-
所以你想返回类似于
IEnumerable<State>的东西? -
@GeorgFritzsche '问题' 是一个接口。我真正想做的是返回一个通用容器而不是一个具体的容器。
-
@svic 完全正确。我觉得我不应该尝试在 C++ 中这样做,但是如何返回某种类型的集合?
标签: c++ algorithm templates generics containers