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

C++ Cannot pass public const string member as argument to member function of same class

本文关键字:成员 函数 一类 不能 const C++ 字符串 参数传递      更新时间:2023-10-16

我有一个类(在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 的)类中,我能够使用此成员变量调用相同的方法。问题出在哪里?

忽略我之前的漫谈。 类名::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() 中更改参数的名称。