2016-07-23 6 views
0

私はgtkmmで小さなアプリケーションを開発しました。私のアプリケーションは、私のウィンドウ(メインウィンドウ)用のクラスとマシン上で実行中のプロセスを取り出す別のクラスの2つのクラスで構成されています。私のクラスは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 
} 

このリストには、私の他のクラスのチックコードを記入することができます。

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); 

がどのようにウィジェットにアクセスすることができます error: m_list was not declared in this scope

rowGtk::TreeModel::Row)私の関数に引数として渡されるメインウィンドウ別のクラスからの私のクラス:私はmy_listというにアクセスしようとすると、しかし、私はエラーを取得しますか?

答えて

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); 
関連する問題