2012-08-10 29 views
10

में वेक्टर के लिए डिफ़ॉल्ट मान कैसे निर्दिष्ट करूं, मैं कोड में टिप्पणी के रूप में स्थितित्मक पैरामीटर के लिए डिफ़ॉल्ट मान देना चाहता हूं, लेकिन संकलक शिकायत करता है। कोड के रूप में यह ठीक संकलित है। मैं बढ़ावा 1.46.1 और जी ++ मैं बूस्ट :: प्रोग्राम_ऑप्शन

int main(int argc, char *argv[]) { 
    namespace po = boost::program_options; 

    po::positional_options_description p; 
    p.add("path", -1); 

    po::options_description desc("Options"); 
    std::vector<std::string> vec_str; 
    std::string str; 
    desc.add_options() 
     ("foo,f", po::value<std::string>()->default_value(str), "bar") 
     //("path,p", po::value< std::vector<std::string> >()->default_value(vec_str), "input files.") 
     ("path,p", po::value< std::vector<std::string> >(), "input files.") 
    ; 

    po::variables_map vm; 
    po::store(po::command_line_parser(argc, argv).options(desc).positional(p).run(), vm); 
    po::notify(vm); 
} 
+1

[इस मदद करता है?] (Http://stackoverflow.com/a/3152802/220636) – nabulke

+0

इस लाइन को संकलित करता है:
("पथ, पी", पो :: मूल्य >() -> default_value (std :: वेक्टर (), ""), "इनपुट फाइलें")
लेकिन मुझे नहीं पता कि क्यों – Michael

+0

@nabulke हाँ यह मदद करता है – Michael

उत्तर

11

का उपयोग मैं डिफ़ॉल्ट मूल्य का एक शाब्दिक प्रतिनिधित्व देने के लिए की जरूरत है, http://lists.boost.org/boost-users/2010/01/55054.php देखते हैं।

आईई। निम्न पंक्ति काम करता है:

("path,p", po::value< std::vector<std::string> >()->default_value(std::vector<std::string>(), ""), "input files.") 

मुझे लगता है कि इस मदद उत्पादन के लिए आवश्यक है, जो कर सकते थे मेरे उदाहरण में

std::cout << desc << std::endl; 

के बाद से संकलक कैसे ओवरलोड पता नहीं है vector<string> के लिए operator<<(), यह शिकायत।