2012-04-04 1 views
0
class Foo {}; 
Foo foo; 

namespace po = boost::program_options; 

boost::program_options::options_description desc("Allowed options") 
desc.add_options() 
    ("foo", po::value<Foo>(&foo)); 

po::variables_map vm; 
po::store(po::parse_command_line(argc, argv, desc), vm); 

выше в конечном итоге попытаться сделать lex_cast из станд :: строк & к Foo &получать повышение :: program_options для лечения ввода константным полукокса * вместо станда :: строка

Есть ли способ для этого сделать lex_cast от const char * & до Foo & вместо этого?

Спасибо!

+0

так это проблема компиляции времени? Не проблема времени выполнения? –

ответ

0

Вы можете справиться с этим определением оператора IStream для Foo:

std::istream& operator>>(std::istream &input_stream, Foo &foo) { 
    // read from input_stream into foo... 
    // if read fails, set failbit in input_stream... 
    return input_stream; 
}