2011-08-03 34 views
5

aşağıda Kodum işe yaramadı:Boost :: Program_Options içinde, wstring için varsayılan değer nasıl ayarlanır?

wstring config_file; 
// Declare a group of options that will be 
// allowed only on command line 
po::options_description generic("Generic options"); 
generic.add_options() 
    ("help,h", "produce help message") 
    ("config,c", po::wvalue<wstring>(&config_file)->default_value(L"DXDrv.cfg"), "name of a file of a configuration.") 
    ; 

derleme hata verdi:

d:\repo\a4x_ext\minidxdriver\testapp\configparser\boost\lexical_cast.hpp(1096) : error C2039: 'setg' : is not a member of 'boost::detail::lexical_stream_limited_src<CharT,Base,Traits>'

+0

Hangi parça çalışmıyor? Ne almayı bekliyordun? Şimdi sorunun ne olduğu belli değil. –

+0

Yayımımı hata iletisiyle güncelledim. Bana biraz örnek göstermeye yardım edebilir misiniz? Yorumunuz için çok teşekkürler! –

+0

Derleme hatasından bir şablon örnekleme geri-izi var mıydı? – Pete

cevap

10

Uzun soluklu açıklama: program_options içinde yatan typed_value tip bir sözcük döküm yapmaya çalışır Bunun nedeni wchar - char, m_default_value_as_text özel üyesini ayarlıyor. Hangi nedenle olursa olsun, basic_string türü, doğru şablon türlerini oluşturmak için gerekli fonksiyonlara sahip değildir.

Neyse ki, typed_value sınıf değeri bir dizi temsilini sağlar DEFAULT_VALUE ve implicit_value için ikinci bir geçersiz kılma bulunmaktadır. Bu sorunu gideren lexical_cast'i atlar. Şunlar gibi:

 tvalue<tstring>()->default_value(_T("output.png"), "output.png") 
+1

Niçin program_adımaları, varsayılan değeri bir dizgeye dönüştürmekle uğraşır? Kimin ihtiyacı var? – Syncopated

+0

Sadece cevabı anladım. program_options, yardım mesajını yazdırırken değeri göstermelidir. – Syncopated

+0

Mükemmel mesaj! Syncopated ile aynı sorum var. Çıkış değeri wvalue olduğunda, varsayılan değer için neden dar dizeye ihtiyaç duyduğuna dair herhangi bir fikir var mı? Yardım mesajıyla ilgisi var mı? – namezero

İlgili konular