2015-11-09 4 views
0

Я пытаюсь использовать библиотеку Boost, я скопировал всю папку boost, за исключением файлов документов, libs, more, status, tools.C++ cant variable variable BOOST_FOREACH

Когда я пытаюсь использовать блок кода ниже, мой компилятор не может определить 2 вещи.

vector<string>* read(string & filename) 
{ 


// populate tree structure pt 
    using boost::property_tree::ptree; 
    ptree pt; 
    read_xml(filename, pt); 
    ptree tree; 

vector<string> *ans = new vector<string>(); 

BOOST_FOREACH(ptree::value_type &v, pt.get_child("computer")) 
{ 
    string name = v.first.get<string>("name"); 
    string OS = v.first.get<string>("OS"); 

    ans->push_back(name); 
    ans->push_back(OS); 
} 

return ans; 
} 
  1. 'BOOST_FOREACH' не был объявлен в этой области
  2. не удается разрешить STRUCT элемент 'value_type'

Я знаю, следующие включают линии должны быть достаточно:

#include <iostream> 
#include <vector> 
#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/xml_parser.hpp> 

Если вам нужна дополнительная информация, обратитесь к нам. ТИА

EDIT

после добавления включают foreach.hpp, им получать:

this issue

+0

Интересный скриншот вас там. Похоже, что ваши конфигурации IDE вышли из строя. Скомпилирует ли он? – sehe

+0

его не компилировать..не знаю почему –

+0

@sehe, пожалуйста, проверьте относительно нового изображения –

ответ

4

Я знаю, следующие включают линии должны быть достаточно:

Очевидно, что это не так. Добавить

#include <boost/foreach.hpp> 

Фиксированный код:

Live On Coliru

#include <iostream> 
#include <vector> 
#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/xml_parser.hpp> 
#include <boost/foreach.hpp> 

std::vector<std::string> read(std::string & filename) 
{ 
    // populate tree structure pt 
    using boost::property_tree::ptree; 

    ptree pt; 
    read_xml(filename, pt); 
    ptree tree; 

    std::vector<std::string> ans; 

    BOOST_FOREACH(ptree::value_type &v, pt.get_child("computer")) 
    { 
     std::string name = v.second.get<std::string>("name"); 
     std::string OS = v.second.get<std::string>("OS"); 

     ans.push_back(name); 
     ans.push_back(OS); 
    } 

    return ans; 
} 

int main() 
{ 
} 
+0

этот файл не существует, только foreach.hpp и foreach_fwd.hpp –

+0

Уже включен обязательный живой образец: http://coliru.stacked-crooked.com/a/32f9a8fc4aea596f – sehe

+0

, если я это сделаю, я получаю 30 ошибок, когда я наводил строку. что-то вроде msgstr "ошибка после макроподстановки: cant resolve namespace member ..." –