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

标签 c++ c++11 wxwidgets

我需要将 wxTextControl 中的文本验证为 float 或 int(对于初学者)。我最终将需要 float > 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”,但我认为一旦我让这部分工作,我就可以通过事件处理程序处理它。问题是我收到一条错误消息,指出

no instance of constructor "wxTextValidator::wxTextValidator" matches the argument list

最佳答案

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

关于c++ - 构造函数 wxTextValidator 的实例没有匹配实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40097685/

相关文章:

c++ - DirectX 混合状态问题

c++ - 在引用中存储指向类的指针

c++ - 编译时计算编码 n 个不同状态所需的位数

带有大括号初始值设定项的 C++ 隐式转换

c++ - Microsoft VC++ PPL 和 sleep

c++ - wxWidgets 在调用 wxApp::OnInit 之前退出

c++ - WXWidgets Sizers 在侧面留下一个空隙

c++ - 如何限制C++中rand函数生成的数字

c++ - 这是 "Idiom"定义良好吗?

C++模板矩阵类——方阵特化