2015-04-15 1 views
0

Я хотел бы получить доступ к наддува :: кортеж элемент с фениксом (C++ 98)Легкий способ получить доступ к наддува :: кортеж с фениксом

#include <boost/tuple/tuple.hpp> 
#include <boost/phoenix.hpp> 

#include <algorithm> 
#include <vector> 

int main() 
{ 
    using namespace boost::phoenix::placeholders; 

    std::vector<boost::tuple<int> > vec; 
    vec.push_back(boost::make_tuple(3)); 
    vec.push_back(boost::make_tuple(4)); 

    std::for_each(vec.begin(), vec.end(), std::cout<<boost::get<0>(arg1)<<std::endl); 
} 

Но он не может работать, я попытался с станд :: pair и self define struct, но они также не могут работать. Возможно ли получить доступ к этому элементу с помощью некоторого интуитивного, простого решения?

+1

http://www.boost.org/doc/libs/1_57_0/libs/phoenix/doc/html/phoenix/modules/function/adapting_functions.html –

+0

@ TC Спасибо, но до сих пор не могу понять, как получить доступ к элементу struct self define после изучения примера, который вы отправляете – user3689849

ответ

1

Просто узнать, вы можете использовать повышение :: феникс :: at_c для доступа к элементу кортежа

std::for_each(vec.begin(), vec.end(), std::cout<<boost::phoenix::at_c<0>(arg1)<<std::endl); 

Вы можете получить доступ к зОму :: паре с фениксами тоже, но нужно включить заголовок

#include <boost/fusion/adapted.hpp>

Еще не хватает пример самости доступа определяют-структуру, если я могу понять, что я бы разместить его

Edit: вам необходимо включить

#include <boost/phoenix/fusion.hpp> 

еще at_c не нашел

+2

. Чтобы получить доступ к полям, определенным пользователем, вам придется сначала адаптировать его к последовательности Boost.Fusion (см. [Здесь] (http: //www.boost.org/doc/libs/1_57_0/libs/fusion/doc/html/fusion/adapted/adapt_struct.html)). Тогда вы сможете получить доступ к своим полям так же, как и к кортежу. –

 Смежные вопросы

  • Нет связанных вопросов^_^