没有与“调用”匹配的函数;MessageDlg"; >我收到一个错误,表示它们在C++ +Builder中调用“ MasaGeDelg())没有匹配函数。
我的头文件确实包含没有与“调用”匹配的函数;MessageDlg"; >我收到一个错误,表示它们在C++ +Builder中调用“ MasaGeDelg())没有匹配函数。,c++,c++builder,C++,C++builder,我的头文件确实包含,函数就是在这里声明的。正在从t表单类公共函数中调用该函数。以下是违规代码: void MBInvalidPosition() { MessageDlg("Invalid Position Selected. Please Try Again", mtError,mbOK,0); } 如有任何想法,将不胜感激。谢谢。C++支持重载函数-您调用的函数是其名称和提供给它的参数类型的乘积。因此,假设您有正确的函数名,合理的第一个猜测是您为
,函数就是在这里声明的。正在从t表单
类公共函数中调用该函数。以下是违规代码:
void MBInvalidPosition() {
MessageDlg("Invalid Position Selected. Please Try Again",
mtError,mbOK,0);
}
如有任何想法,将不胜感激。谢谢。C++支持重载函数-您调用的函数是其名称和提供给它的参数类型的乘积。因此,假设您有正确的函数名,合理的第一个猜测是您为其中一个参数提供了错误的类型
具体来说,它看起来不像
mbOK
可以像那样原始提供-MessageDlg
需要第三个TMsgDlgButtons
类型的参数,但是mbOK
是TMsgDlgBtn
类型的参数。创建一组只包含OK按钮的按钮的合适方法是tmsglgbuttons()C++支持重载函数-您调用的函数是其名称和提供给它的参数类型的乘积。因此,假设您有正确的函数名,合理的第一个猜测是您为其中一个参数提供了错误的类型
具体来说,它看起来不像mbOK
可以像那样原始提供-MessageDlg
需要第三个TMsgDlgButtons
类型的参数,但是mbOK
是TMsgDlgBtn
类型的参数。创建仅包含OK按钮的一组按钮的适当方法是tmsglgbuttons(),仅供参考-由于使用了XE2+,第一个参数将使用UnicodeString
,但会传入一个窄字符串文本(const char[44]
)。虽然这将“工作”良好,但它确实涉及到运行时的ANSI->Unicode转换。为了避免这种开销,您应该提供Unicode字符串文本,即:MessageDlg(L“…”,…)
或者更好的MessageDlg(_D(“…”),)
@Tommy。谢谢你的提示。它就像一个符咒。作为C+Builder的新手,我不知道你不能传递直接按钮ID。谢谢。@RemyLebeau:谢谢你的提示。另外,仅供参考-由于使用了XE2+,第一个参数将使用UnicodeString
,但会传递一个窄字符串文本(const char[44]
)。虽然这将“工作”良好,但它确实涉及到运行时的ANSI->Unicode转换。为了避免这种开销,您应该提供Unicode字符串文本,即:MessageDlg(L“…”,…)
或者更好的MessageDlg(_D(“…”),)
@Tommy。谢谢你的提示。它就像一个符咒。作为C+Builder的新手,我不知道你不能传递直接按钮ID。谢谢。@RemyLebeau:谢谢你的提示。
void MBInvalidPosition() {
MessageDlg("Invalid Position Selected. Please Try Again",
mtError,TMsgDlgButtons() << mbOK,0);
}