2014-01-05 42 views
2

我想在OSX Mavericks(Darwin 13.0.0)上編譯SALOME 7.3.0,並且安裝了1.55(使用自制軟件)。在名稱空間boost :: detail(SALOME 7.3.0)中沒有名爲'dynamic_cast_tag'的成員

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()) 
             ^

代碼片段是

#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()) 
     {} 

我不是一個C++程序員:GCC試圖定義的模板函數的錯誤是當扼流圈上的從SALOME(SRC/DF)的工具包功能中的一個所以不僅僅是一點障礙。在SALOME論壇上有類似的問題報告,但沒有回覆。

+0

看起來像一個丟失的包括。僅供參考,不建議直接使用詳細信息名稱空間的成員。 – erenon

回答

1

對boost庫的最近更改消除了boost :: detail :: dynamic_cast_tag(),以支持動態投射的新機制。這個文件很糟糕,不存在。

你應該能夠用較舊的提升來構建,我認爲1.44應該足夠了。

0

我遇到了類似的問題。編輯源代碼並使用dynamic_pointer_cast>解決了這個問題。在這種情況下:

boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag()) 

成爲

boost::shared_ptr<T>(dynamic_pointer_cast<T>(r)) 
相關問題