Eu estou tentando compilar SALOME 7.3.0 no OSX Mavericks (Darwin 13.0.0) e ter boost 1.55 instalado (usando homebrew). O GCC engasga com uma das funções do kit de ferramentas do SALOME (SRC / DF) ao tentar definir uma função de modelo, o erro é:
In file included from /Users/dingram/Developer/SALOME/KERNEL_SRC_7.3.0/src/DF/DF_Attribute.cxx:20:
/Users/dingram/Developer/SALOME/KERNEL_SRC_7.3.0/src/DF/DF_definitions.hxx:50:44: error: no member named "dynamic_cast_tag" in namespace
"boost::detail"
boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
^
o fragmento de código é
#include <iostream>
#include <stdio.h>
#include <boost/shared_ptr.hpp>
template<class T> class df_shared_ptr: public boost::shared_ptr<T>
{
public:
df_shared_ptr() {}
template<class Y>
explicit df_shared_ptr(Y * p)
{
boost::shared_ptr<T>::reset(p);
}
template<class Y>
df_shared_ptr(df_shared_ptr<Y> const & r):
boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
{}
Eu não sou um programador de C ++ e por isso estou mais do que um pouco frustrado. Há relatos de problemas semelhantes nos fóruns do SALOME, mas sem respostas.
Respostas:
1 para resposta № 1Uma mudança recente na biblioteca de reforço eliminou boost :: detail :: dynamic_cast_tag () em favor de um novo mecanismo para conversão dinâmica. A documentação para isso é pobre ou inexistente.
Você deve ser capaz de construir com um impulso mais antigo, acho que 1,44 deve ser suficiente.
0 para resposta № 2
Eu me deparei com um problema semelhante. editando a fonte e usando dynamic_pointer_cast <> resolveu o problema. Nesse caso:
boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
torna-se
boost::shared_ptr<T>(dynamic_pointer_cast<T>(r))