没有匹配的调用函数(期望引用指针而不是指针)

Mic*_*nen 4 c++ macos xcode gcc

我从xcode(3.2.4)/ gcc(4.0)得到错误:

/Users/admin/scm/audacity/mac/../src/toolbars/DeviceToolBar.cpp: In member function 'void DeviceToolBar::ShowInputDialog()':
/Users/admin/scm/audacity/mac/../src/toolbars/DeviceToolBar.cpp:817: error: no matching function for call to 'DeviceToolBar::ShowComboDialog(wxChoice*&, wxString)'
/Users/admin/scm/audacity/mac/../src/toolbars/DeviceToolBar.h:74: note: candidates are: void DeviceToolBar::ShowComboDialog(wxChoice*, wxString&)
Run Code Online (Sandbox Code Playgroud)

因此看起来它期望在ShowComboDialog中引用指针,但我不知道为什么因为签名显然是正常的指针.此外,如果它期望引用指针,我调用它的方式应该工作.这是第一个错误,并且之前没有特殊警告.

此外,这编译在MSVC 2008快递中.请给我一个线索.

//in the class def
//(only relevant portions included
class DeviceToolBar:public ToolBar {

 public:
   DeviceToolBar();
   virtual ~DeviceToolBar();
   void ShowInputDialog();
 private:
   void ShowComboDialog(wxChoice *combo, wxString &title);

   wxChoice *mInput;
};

//in the cpp file
void DeviceToolBar::ShowInputDialog()
{
   ShowComboDialog(mInput, wxString(_("Select Input Device")));
}

void DeviceToolBar::ShowComboDialog(wxChoice *combo, wxString &title)
{
//...
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*her 10

问题不是第一个参数; 它是第二个.你是临时传递的wxString,但是函数期待引用.C++会自动将临时转换为const引用,但不能将其转换为引用.您需要将ShowComboDialogconst引用作为其第二个参数.