2016-07-23 62 views
0

我現在用gtkmm開發了一個小應用程序。我的應用程序由兩個類組成,一個用於我的窗口(mainwindow),另一個用於檢索我的機器上正在運行的進程。 mainwindow我的類包含一個List小部件。從另一個類訪問MainWindow小部件gtkmm

class MainWindow : public Gtk::Window 
{ 
    public: 
    MainWindow(); 
    virtual ~MainWindow(); 

    bool displayStatus(GdkEventCrossing* event, std::string message); 
    bool hideStatus(GdkEventCrossing* event); 

    List m_list; 
    ...other widget 
} 

我希望我可以從我的其他類與thic代碼填充此列表。但是,當我嘗試訪問my_list我得到一個錯誤: error: m_list was not declared in this scope

rowGtk::TreeModel::Row)作爲參數傳遞給我的功能

PROCTAB* proc = openproc(PROC_FILLARG | PROC_FILLSTAT); 

while (proc_t* proc_info = readproc(proc, NULL)) { 

    row[m_list.m_col_tid] = proc_info->tid; 
    row[m_list.m_col_ppid] = proc_info->ppid; 
    row[m_list.m_col_cmdline] = proc_info->cmd; 
    row[m_list.m_col_utime] = proc_info->utime; 
    row[m_list.m_col_stime] = proc_info->stime; 

    freeproc(proc_info); 
} 

closeproc(proc); 

如何訪問一個小部件主窗口我的類從另一個類?

回答

0

通用的解決方案:

class B; 
class A 
{ 
    public: 
     void fillByOtherClass(const B& b) 
     { 
      b.fill(list_to_fill); 
     } 
    private: 
     List list_to_fill; 

} 

class B 
{ 
    public: 
     void fill(List& list) const 
     { 
      //fill it 
     } 
} 

用法:

A a; 
B b; 

a.fillByOtherClass(b);