Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Заголовок <boost/shared_ptr.hpp> как подключить?


Автор: moes 18.2.2009, 14:01
Проблема в следующем.
Есть проект на с++. Хотелось бы использовать в нем boost библиотеку и в частности shared_ptr.
Для каждого классы используеться отдельный заголовочный файл .h и отдельный файл с реализацией .схх.
При попытке подключения <boost/shared_ptr.h> в заголовочном файле компилятор gcc4.1.x выюает ошибку
 
Error: G__getvariable: expression  /basics/boost/include/boost/config.hpp:23:
Error: operator '/' divided by zero /basics/boost/include/boost/config.hpp:23:
Error: operator '/' divided by zero /basics/boost/include/boost/config.hpp:23:
Syntax Error: <boost/config/user.hpp> /basics/boost/include/boost/config.hpp:23:
Error: cannot expand #include BOOST_USER_CONFIG /basics/boost/include/boost/config.hpp:27:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation

Судя по всему она связана с циклическими зависимостями.

При подклбчении того же заголовка в схх файле все компилится,
однако необходимо создать переменные класса типа shared_ptr.
Выходом было бы forward declaration клоассов для shared_ptr,
но тогда придется объявлять члены класса указателями на shared_ptr что не хочется делать.

Что посоветуете, кто нибудь сталкивался с подобной проблемой ?

Автор: Vaulter 18.2.2009, 15:41
Код

#include <boost/shared_ptr.hpp>

все работает.
версия буста?

Автор: moes 18.2.2009, 16:17
Цитата(Vaulter @ 18.2.2009,  15:41)
Код

#include <boost/shared_ptr.hpp>

все работает.
версия буста?

версия 1.35.
вот что написано в одном из коментариев в буст.

//
// This header can get included by boost/shared_ptr.hpp which leads
// to cyclic dependencies, the workaround is to forward declare all 
// the boost components, and then include the actual headers afterwards.
// This is fragile, but seems to work, and doesn't require modification
// of boost/shared_ptr.hpp.
//

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)