не могу получить указатель на объект wxwidget, используя wxsmith

прямо к сути:
Я изучаю инструментарий wxsmith и wxwidgets, я создал базовый графический интерфейс, содержащий одну кнопку и 2 статических текстовых поля. GUI компилируется нормально до сих пор. Мой фрейм называется proba2Frame, затем я добавляю свою собственную функцию, которая не является членом какого-либо класса, но я объявил в заголовочном файле для proba2Frame, что моя функция — друг. Ниже приведен код моей функции:

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

я получаю ошибку:

expected primary-expression before ‘.’ token

Что именно я делаю не так и как получить указатель StaticText в случае, если мое решение совершенно неверно?

Заранее спасибо

1

Решение

Вы делаете это звучит как 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,

2

Другие решения

wxStaticText — это имя класса wxWidgets. Вы не должны называть атрибуты вашего фрейма ‘wxStaticText’. Несмотря на код, который вы опубликовали, я сомневаюсь, что вы действительно сделали такую ​​ужасную вещь. Я думаю, вы хотели написать:

text =  proba2Frame.StaticText1;

Я предполагаю, что имя атрибута — StaticText1, указатель на экземпляр класса wxStaticText.

0

По вопросам рекламы [email protected]