"MessageDlg" 的调用没有匹配的函数

No matching function for call to "MessageDlg"

我收到一条错误消息,表明它们与 C++ Builder 中 MessageDlg() 的调用不匹配。

我的头文件确实包含 <Vcl.Dialogs.hpp>,这是声明函数的地方。该函数是从 TForm class public 函数中调用的。下面是有问题的代码:

void MBInvalidPosition() {
    MessageDlg("Invalid Position Selected. Please Try Again",
        mtError,mbOK,0);
}

如有任何想法,我们将不胜感激。谢谢。

C++ 支持重载函数——您调用的函数是其名称和提供给它的参数类型的产物。因此,假设您有正确的函数名称,第一个合理的猜测是您为其中一个参数提供了错误的类型。

具体来说,mbOK 似乎不能像那样原始提供——MessageDlg 想要第三个 TMsgDlgButtons 类型的参数,但 mbOK 是类型TMsgDlgBtn。创建一组仅包含“确定”按钮的按钮的适当方法是 TMsgDlgButtons() << mbOK。所以:

void MBInvalidPosition() {
    MessageDlg("Invalid Position Selected. Please Try Again",
        mtError,TMsgDlgButtons() << mbOK,0);
}