没有构造函数wxTextValidator的实例匹配实例

时间:2016-10-18 00:28:40

标签: c++ c++11 wxwidgets

我需要将wxTextControl中的文本验证为float或int(对于初学者)。我最终需要漂浮> 0,float> = 0等等。我的想法是创建一个定义所有场景的枚举,并在函数中创建val。我无法入门,因为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”的实例匹配   参数列表

2 个答案:

答案 0 :(得分:0)

你试过wxNumValidator< T>而不是你自己的?

答案 1 :(得分:0)

我被Visual Studio愚弄了。上面代码的问题是default_value是wstring,当它需要是wxString *时。 Visual Studio突出显示了```wxFILTER_NONE''',这让我觉得问题就在那里!

重新调整以修复字符串参数后,它可以工作。好吧它编译 - 现在我需要根据需要进行验证......