Я не очень опытен в cpp (раньше работал на python).У меня есть следующая проблема:
1) У меня есть главный класс A (окно) и методы m_A1 и m_A2
2) У меня есть маленький класс B (диалог) собратный вызов m_B1
3) экземпляр класса B создается и уничтожается внутри m_A1
4) из обратного вызова m_B1 Мне нужно вызвать m_A2
Я пытался дать ссылку на Bк экземпляру A (с 'this'), но это решение, которое работало здесь на python, не работает.
Я пытался объявить класс B внутри A, чтобы методы A были доступны внутри B, ноЯ не могу понять, как написать код методов B, например, написать конструктор класса B будет A :: B :: A :: B (), но дает синтаксические ошибки.
Вотнемного кода:
class Centrino
{
public:
Centrino();
virtual ~Centrino();
Gtk::Window *mp_window;
protected:
...
bool on_window_key_press(GdkEventKey *event);
void io_process_incoming_command(char *in_str_complete);
...
};
class DebugDialog : public Gtk::Dialog
{
public:
DebugDialog(const char *title, Gtk::Window& parent, bool modal);
virtual ~DebugDialog() {};
protected:
void on_button_send_clicked();
...
};
void Centrino::io_process_incoming_command(char *in_str_complete)
{
...
}
bool Centrino::on_window_key_press(GdkEventKey *event_key)
{
if(event_key->state & GDK_CONTROL_MASK)
{
if((event_key->keyval == GDK_KEY_d) || (event_key->keyval == GDK_KEY_D))
{
DebugDialog dialog("Debug Dialog", *mp_window, true);
int response = dialog.run();
}
}
...
}
void DebugDialog::on_button_send_clicked()
{
Glib::ustring entry_content = m_entry.get_text();
io_process_incoming_command(entry_content.c_str());
}
Centrino - это класс, который я назвал A, DebugDialog - это класс, который я назвал B. Из DebugDialog :: on_button_send_clicked () мне нужно вызвать Centrino :: io_process_incoming_command ().Область действия экземпляра класса DebugDialog находится внутри Centrino :: on_window_key_press ().Кто-нибудь может указать мне пример?Заранее спасибо.