2016-10-18 3 views
0

wxTextControl内のテキストを浮動小数点数またはintとして検証する必要があります(スターター用)。最終的にfloat> 0、float> = 0などが必要になります。私の考えは、すべてのシナリオを定義するenumを作成し、関数内でvalを作成することでした。私はwxTextValidatorの宣言がエラーを投げるので、始めに問題があります。コンストラクタwxTextValidatorのインスタンスがインスタンスと一致しない

enum class glValidate { glInt, glPosInt, gl0PosInt, glFloat, glPosFloat, gl0PosFloat, glString}; 

wxValidator GuiLib::CreateValidator(std::wstring* default_value, glValidate flag) { 
    wxArrayString numberArray; 
    numberArray.Add(wxT("0")); 
    numberArray.Add(wxT("1")); 
    numberArray.Add(wxT("2")); 
    numberArray.Add(wxT("3")); 
    numberArray.Add(wxT("4")); 
    numberArray.Add(wxT("5")); 
    numberArray.Add(wxT("6")); 
    numberArray.Add(wxT("7")); 
    numberArray.Add(wxT("8")); 
    numberArray.Add(wxT("9")); 

wxTextValidator val(wxFILTER_NONE, default_value); 

switch (flag) { 
    case glValidate::glInt:  
     numberArray.Add(wxT("-")); 
     val.SetStyle = wxFILTER_INCLUDE_LIST; 
     val.SetIncludes(numberArray); 
     break; 
    case glValidate::glPosInt: 
     val.SetStyle = wxFILTER_INCLUDE_LIST; 
     val.SetIncludes(numberArray); 
     break; 
    } 
    etc.. 
} 

私はGLINTケースは「123-456」ができるようになるためにも、この単純なシナリオが逮捕されていることを認識し、私は私が働いてこの部分を得れば、私は、イベントハンドラを経由してそれに対処することができると思います。問題は、私は

を示すエラーメッセージが出ていコンストラクタ「wxTextValidator :: wxTextValidator」のインスタンスが 引数リスト

答えて

0

私はVisual Studioにだまされました。上記のコードの問題点は、default_valueがwstring *である必要がある場合にwstringであることです。 Visual Studioは `` `` wxFILTER_NONE '' 'を強調表示し、問題がそこにあったと私を導いてくれました!

文字列paramを修正し直した後に動作します。うまくコンパイルされました - 今、私は必要に応じて検証が動作するようにする必要があります...

0

と一致していないあなたは>ではなく、独自のwxNumValidator < Tを試してみたことがあります?

+0

要件は実際にはテキストパラメータですが、テスト目的で試してみます。 – marcp

+0

@marcp、それがあなたのために働いた場合はお知らせください... – Igor

関連する問題