EDIT: Я сдаюсь! Сейчас я использую просто for (string& word : sentence) { .. }
. BOOST_FOREACH
безнадежно. Спасибо.Как сделать мой класс итерабельным BOOST_FOREACH в C++?
Я читал this и this, и они вообще не помогли. Особенно хочу спросить о второй ссылке. Почему вы должны определить некоторые странные структуры в пространстве имен boost
? Класс, который я хочу включить BOOST_FOREACH для, определяется в моем собственном пространстве имен. Как я могу получить доступ к данным из этого класса, если я определяю свои итераторы в namespace boost { .. }
? Это не имеет никакого смысла. Я не знаю, почему найти эквивалентность IEnumerable
в C++ заняло у меня столько времени! Wans't boost
должен был сэкономить мое время?
Может кто-нибудь сказать мне просто опрятному способ перебрать этот класс:
class Sentence {
private:
vector<string> words;
}
с этим кодом:
Sentence sentence;
BOOST_FOREACH(string word, sentence) {
// ..
}
Спасибо.
Этот фрагмент из ответа * вы * связали со значительным количеством его сумм: если вы определили класс итератора, вам просто нужно добавить функции begin() и end() для вашего класса. – Borgleader
Класс 'Sentence' определен в собственном пространстве имен. Как я могу получить доступ к словам (которые не только в другом пространстве имен, но и в частном члене) из тех итераторов, определенных в пространстве имен 'boost'? –