2012-11-10 1 views
7

Vorrei sapere quali funzioni e/o operatori devono essere implementati all'interno di una classe per lavorare con l'operatore boost::format%.Quali sono i requisiti per un tipo personalizzato per lavorare con l'operatore boost :: format%?

Ad esempio:

class A 
{ 
    int n; 
    // <-- What additional operator/s and/or function/s must be provided? 
} 

A a; 
boost::format f("%1%"); 
f % a; 

Ho studiato Pretty-print C++ STL containers, che è legato in qualche modo alla mia domanda, ma questo mi ha mandato nei giorni di revisione relativo e di apprendimento per quanto riguarda le questioni che coinvolgono auto e varie altre lingue Caratteristiche. Non ho ancora finito con tutte queste indagini.

Qualcuno può rispondere a questa domanda specifica?

risposta

3

Hai solo bisogno di definire un operatore di una corretta uscita (operator<<):

#include <boost/format.hpp> 
#include <iostream> 

struct A 
{ 
    int n; 

    A() : n() {} 

    friend std::ostream &operator<<(std::ostream &oss, const A &a) { 
     oss << "[A]: " << a.n; 
    } 
}; 

int main() { 
    A a; 
    boost::format f("%1%"); 
    std::cout << f % a << std::endl; 
}