Форвард объявляет объект boost :: multi_index_container

Мне было интересно, как переслать объявить boost::multi_index_container какое-то время.

Есть multi_index_container_fwd.hpp, ordered_index_fwd.hpp и так далее в multi_index каталоги.

Предполагается, что они скрывают реализацию от той части программы, которая не должна знать детали объекта, верно?

Тем не менее, я не могу найти способ объявить multi_index_container только с этими * _fwd.hpp файлами.

Я всегда включал полный файл реализации, multi_index_container.hpp индекс.

1

Решение

В принципе, вы должны быть в состоянии объявить, например, функции, которые зависят от multi_index_container введите с помощью соответствующего *_fwd.hpp заголовки. Но не каждая ситуация может быть обработана таким образом:

class A{
...
private:
multi_index_container<...>* p; // can use *_fwd.hpp headers
};

class B{
...
private:
multi_index_container<...> m; // needs full headers!!
};

Здесь нет ничего особенного с Boost.MultiIndex: всякий раз, когда вы объявляете переменную типа T чей размер должен быть известен во время компиляции, вы должны иметь полное определение T на месте.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector