1

単刀直入に言うと、wxsmith と wxwidgets ツールキットを学んでいるので、1 つのボタンと 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

proba2FramewxFrame を継承するクラスの名前のように聞こえますか?

もしそうなら、 のインスタンスを作成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;

属性の名前は、wxStaticText クラスのインスタンスへのポインターである StaticText1 であると推測しています。

于 2012-09-23T22:45:08.517 に答える