2010-08-16 8 views
1

Je veux transmettre déclare:déclaration avant en C++

namespace boost { 
    namespace property_tree { 
     template<typename Key, typename Data, typename KeyCompare = std::less<Key> > 
     class basic_ptree; 
     typedef basic_ptree< std::string, std::string > ptree; 
    } 
} 

mais mon g ++ lits sur la redéfinition en raison de l'argument de modèle par défaut. Comment puis-je atteindre cet objectif?

+3

'#include ' n'est pas une option? – Thomas

Répondre

5

Pour transférer-déclarer la property_tree, vous devez inclure l'en-tête

#include <boost/property_tree/ptree_fwd.hpp> 

, au lieu de déclarer vous-même.

+0

Le point concernant une déclaration forward est que vous ne voulez pas inclure l'en-tête. – Job

+4

@Job: Incorrect. Le point sur [forward declaration] (http://en.wikipedia.org/wiki/Forward_declaration) * ne donne pas la définition complète de la structure entière *, pour permettre la référence vers l'avant. – kennytm

+0

... quand un en-tête est appelé '..._ fwd.hpp' –