直截了当: 我正在学习wxsmith和wxwidgets工具包,我创建了一些包含一个按钮和2个静态文本字段的基本GUI。到目前为止,GUI正在进行中。我的框架名称是proba2Frame,然后即时添加我自己的函数,它不是任何类的成员,但我在proba2Frame的头文件中声明我的函数是朋友。以下是我的功能代码:
wxStaticText * dawajpointera()
{
wxStaticText * text;
text = proba2Frame.wxStaticText.StaticText1;
return text;
}
我得到错误:
expected primary-expression before ‘.’ token
我究竟做错了什么以及如何在我的解决方案完全错误的情况下获取指针StaticText?
提前谢谢
答案 0 :(得分:2)
你听起来好像proba2Frame
是继承wxFrame的类的名字吗?
如果是这样,你就会遇到问题,因为你没有创建proba2Frame
的实例,并且你正在尝试访问一部分尚未构建的实例。您的主框架类只是GUI的模板,而不是GUI本身。
最好的方法可能是将proba2Frame
的实例作为参数 -
wxStaticText* dawajpointera(proba2Frame *frame)
{
return frame->StaticText1;
}
当然,这个函数本身有点无意义,但我会假设你之后会做更多涉及指针的事情,并希望它在函数中设置为一个名为text
的指针为了简洁起见。
void func(proba2Frame *frame)
{
wxStaticText *text = frame->StaticText1;
// Do something with text
}
如果您这样做,请考虑将该功能设为proba2Frame
的方法。
答案 1 :(得分:0)
wxStaticText是wxWidgets类的名称。您不应该命名框架'wxStaticText'的属性。尽管您发布了代码,但我怀疑您确实做过这么糟糕的事情。我想,你可能想写的是:
text = proba2Frame.StaticText1;
我猜测该属性的名称是StaticText1,它是指向wxStaticText类实例的指针。