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