boost-any

    0熱度

    2回答

    我正在C++中開發一些圖像處理算法。爲了使我的代碼更加通用化,並且能夠在不重新編譯整個項目的情況下配置所有內容,我想到了將處理算法分割成小部分(「提取器」)的想法,使它們成爲從單一接口繼承的對象,從工廠方法解析的XML文件配置它們的執行順序和參數。但是,輸入和輸出類型,這些基本的處理塊可以是不同的,所以我想到了使用boost ::任何一個廣義的類型,所以每一個與圖像的每個操作會是什麼樣子: boo

    7熱度

    1回答

    我有一個核心轉儲,我正在用gdb查看核心轉儲。 我想知道是否有辦法能夠檢查gdb中boost :: any值的值嗎? 在覈心,我有地址的提升任何和所以我試圖將它轉換爲佔位符,看看我是否可以檢查的價值,但我倒下了。我知道boost的類型是無符號的,所以有什麼方法可以查看知道類型的任何值? (gdb) print ('boost::any::placeholder')(*(('boost::any'*

    1熱度

    2回答

    我希望擺脫boost代碼依賴我的代碼。我有以下結構構造。當調用並在代碼boost::any_cast的另一個地方使用此結構體時。我知道一個模板類會做到這一點,但發現很難寫這個模板。 - C++菜鳥。 struct Properties { public: Properties() {} Properties(const std::string &s, const boost::any & p

    2熱度

    1回答

    我正在開發一個使用boost MSM框架的狀態機。他們的教程states,boost :: any可以用作「Kleene事件」,如果當前狀態是源狀態,則允許在任何事件被觸發時轉換。然而,這對我不起作用。我只是收到「no_transition」。 這是我的示例代碼: #include <iostream> #include <boost/msm/back/state_machine.hpp>

    2熱度

    1回答

    我想使用boost::any作爲通用類型存儲在容器中並傳遞給不同的函數。但是在這些函數中我總是知道真正的類型,所以在運行時我不需要任何類型的安全檢查和額外的開銷,static_cast就足夠了。 理想的解決方案是使用類似boost::polymorphic_downcast的東西,但正如我所看到的,它不能應用於這種情況。 我是否應該自己編寫包裝void*或者是否有其他選擇?

    3熱度

    2回答

    我想實現一個存儲不同類型的對象的目錄對象。需要能夠通過名稱訪問對象,獲取實際的指針類型並對其進行序列化。我心目中的對象是這樣的: struct Object { std::string name; SomeType ptr; }; struct Dir { std::string name; std::set<Object> objects; };

    4熱度

    2回答

    我發現,這是不可能的提取boost::any其持有派生類的基類的引用: boost::any holder = Derived(); const Base& base_ref = boost::any_cast<const Base&>(holder); 拋出一個異常boost::bad_any_cast。 看起來這是違反Liskov substitution principle,不是很方便

    5熱度

    2回答

    我發現這個https://gist.github.com/2945472,但我需要一個不依賴於C++ 11的實現。我試圖將其轉換爲僅使用提升,但我遇到了一些麻煩。 這裏是我想出了: #include <boost/any.hpp> #include <boost/function.hpp> #include <boost/bind.hpp> #include <boost/lambda/la

    1熱度

    1回答

    我有以下代碼: #include <boost/any.hpp> #include <boost/spirit/include/qi.hpp> #include <iostream> #include <string> template <typename Iterator> struct parser : boost::spirit::qi::grammar<Iterator, b

    1熱度

    1回答

    我有以下代碼: #include <boost/any.hpp> #include <boost/spirit/include/qi.hpp> #include <iostream> #include <string> template <typename Iterator> struct parser : boost::spirit::qi::grammar<Iterator, b