прямо к сути:
Я изучаю инструментарий wxsmith и wxwidgets, я создал базовый графический интерфейс, содержащий одну кнопку и 2 статических текстовых поля. GUI компилируется нормально до сих пор. Мой фрейм называется proba2Frame, затем я добавляю свою собственную функцию, которая не является членом какого-либо класса, но я объявил в заголовочном файле для proba2Frame, что моя функция — друг. Ниже приведен код моей функции:
wxStaticText * dawajpointera()
{
wxStaticText * text;
text = proba2Frame.wxStaticText.StaticText1;
return text;
}
я получаю ошибку:
expected primary-expression before ‘.’ token
Что именно я делаю не так и как получить указатель StaticText в случае, если мое решение совершенно неверно?
Заранее спасибо
Вы делаете это звучит как 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
,
wxStaticText — это имя класса wxWidgets. Вы не должны называть атрибуты вашего фрейма ‘wxStaticText’. Несмотря на код, который вы опубликовали, я сомневаюсь, что вы действительно сделали такую ужасную вещь. Я думаю, вы хотели написать:
text = proba2Frame.StaticText1;
Я предполагаю, что имя атрибута — StaticText1, указатель на экземпляр класса wxStaticText.