C ++ правильный способ возврата общей коллекции типа

Я новичок в 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) Как сообщить шаблону, что он должен содержать указатели на состояние?

6
задан wolfovercats 25 February 2012 в 01:30
поделиться