C ++不能将公共const字符串成员作为参数传递给同一类的成员函数

时间:2013-11-09 10:25:43

标签: c++ methods reference arguments argument-passing

我有一个类(在wxWidgets框架中)定义如下:

class SomePanel : public wxPanel{
public:
   ...
   void SomeMethod(const std::string& id){
      pointer->UseId(id);
   } 

   const std::string id = "Text"; // still in public area
   ...
}

在pogram中的其他地方,我创建了对该对象的实例的引用...

mSomePanel = new SomePanel();

...然后我想这样做

mSomePanel->SomeMethod(mSomePanel->id); // Compiler gives an error saying that
                                         // there is no element named id.

在类的(ctor)中,我能够使用此成员变量调用相同的方法。问题出在哪里?

1 个答案:

答案 0 :(得分:1)

忽略我以前的谣言。 Classname :: id应该为你提供id。

mSomePanel->SomeMethod(SomePanel::id);  // this should work.

编辑添加更完整的代码:

这是你的.h:

class SomePanel {
 public:
  static const std::string id;  // no need to have an id for each SomePanel object...
};

这在您的实现文件中(例如,SomePanel.cpp):

const std::string SomePanel::id = "Text";

现在引用id:

SomePanel::id

另外,另一个问题可能是方法的参数与成员变量同名。当您调用UseId(id)时,编译器如何知道您指的是您的成员变量与函数的参数。尝试在SomeMethod()中更改参数的名称。