【问题标题】:no instance of constructor wxTextValidator matches instance没有构造函数 wxTextValidator 的实例匹配实例
【发布时间】:2017-02-27 02:30:01
【问题描述】:

我需要将 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”,但我认为一旦我让这部分工作,我可以通过事件处理程序处理这个问题。问题是我收到一条错误消息说明

构造函数“wxTextValidator::wxTextValidator”的实例不匹配 参数列表

【问题讨论】:

    标签: c++ c++11 wxwidgets


    【解决方案1】:

    您是否尝试过 wxNumValidator 而不是您自己的?

    【讨论】:

    • 要求确实是一个文本参数,但我会出于测试目的尝试。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2021-07-02
      • 2016-03-05
      • 2013-10-29
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      相关资源
      最近更新 更多