L'analyse JSON avec boost propriété de l'arbre

Je suis en train de construire une application qui reçoit les informations d'un film de themoviedb.com. Les informations sont fournies dans un fichier JSON. Je suis en train de stocker les informations d'utilisation de boost de la propriété de l'arbre. Mais Il y a un petit problème.

Je illustrer le problème par le code suivant:

#include <vector>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/foreach.hpp>
using namespace std;
using boost::property_tree::ptree;
class single_t{
int             sID;
string          sName;
public:
void            setID(int ID){sID=ID;}
int             getID(){return sID;}
void            setName(string Name){sName=Name;}
string          getName(){return sName;}
};
typedef vector<single_t*> multiple_t;
class foo{
string          fTitle;
multiple_t      fItems;
public:
string          getTitle(){return fTitle;}
void            setTitle(string Title){fTitle=Title;}
multiple_t      getItems(){return fItems;}
void            setItems(multiple_t Items){fItems = Items;}
void            setItems(single_t Item){fItems.push_back(&Item);}
};
int main () {
try{
string response = "{\"title\":\"Foo\",\"items\":[{\"id\":123,\"name\":\"test1\"},{\"id\":456,\"name\":\"test2\"}]}";
ptree pt;
stringstream ss; ss << response;
read_json(ss, pt);
foo results;
results.setTitle(pt.get<string>("title"));
BOOST_FOREACH(ptree::value_type &v,pt.get_child("items")){
single_t result;
result.setID(v.second.get<int>("id"));
result.setName(v.second.get<string>("name"));
results.setItems(result);
}
cout << "Tilte: " << results.getTitle() << endl;
cout << "Items:" << endl;
for (int i=0; i!=results.getItems().size(); i++) {
cout << "\tID: " << results.getItems()[i]->getID()<< endl;
cout << "\tName: " << results.getItems()[i]->getName()<< endl;
}
}
catch (exception& e)
{
cout << "Exception: " << e.what();
}
}

Mais lorsque je l'exécute j'obtiens le résultat suivant:

Tilte: Foo
Items:
ID: 456
Name: test2
ID: 456
Name: test2

Personne ne sait ce que je fais mal? Je suppose que c'est dans le BOOST_FOREACH code.

PS: à l'Aide de Xcode 4.5.2 avec LLVM Compilateur GCC 4.2.

OriginalL'auteur Glenn Vonk | 2012-12-20