1

直截了当:我正在学习 wxsmith 和 wxwidgets 工具包,我创建了一些包含一个按钮和 2 个静态文本字段的基本 GUI。到目前为止,GUI 编译正常。我的框架名称是 proba2Frame,然后我添加了我自己的函数,它不是任何类的成员,但我在 proba2Frame 的头文件中声明我的函数是一个朋友。下面是我的函数代码:

   wxStaticText * dawajpointera()
    {
    wxStaticText * text;
    text = proba2Frame.wxStaticText.StaticText1;
    return text;
    }

我收到错误:

expected primary-expression before ‘.’ token

如果我的解决方案完全错误,我到底做错了什么以及如何获得指针 StaticText ?

先感谢您

4

2 回答 2

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.

于 2012-09-23T23:41:44.990 回答
0

wxStaticText 是 wxWidgets 类的名称。你不应该命名你的框架'wxStaticText'的属性。尽管您发布了代码,但我怀疑您是否真的做了如此可怕的事情。我猜你可能打算写的是:

text =  proba2Frame.StaticText1;

我猜这个属性的名字是StaticText1,一个指向wxStaticText 类实例的指针。

于 2012-09-23T22:45:08.517 回答