2014-12-23 194 views
3

我的班級有問題。使用其他班級的班級

我有兩個單獨的標題。 Color.h和Painter.h:

1)。 Color.h

class Color{ 
     int number; 
    public: 
     void initialize(); 
     void change (Painter draw); 
} 

2)。 Painter.h

class Painter{ 
     Color a,b; 
    public: 
     void get(); 
     void draw(); 
} 

我的問題是,我需要在類Color中使用Painter,並且類Painter使用Color。在Qt中,我得到了一個畫家不是類型的錯誤。我怎樣才能解決這個問題?這個問題的解決方案是什麼?

+3

您可以通過前宣佈一箇中發生的方法在另一個類中,只使用指向forward聲明類的指針。但是如果你在這種簡單的情況下有循環依賴關係,考慮改變你的軟件的設計 –

回答

3

Painter.h你需要包括Color.h,因爲你有型顏色的對象。 但在color.h,你可以添加對Painter類向前聲明:

class Painter; 
class Color{ 
    int number; 
public: 
    void initialize(); 
    void change (Painter draw); //a forward declaration is enough for this 
} 

而且void change (Painter draw);您將在color.cpp定義它,有你有painter.h

+0

你不需要改變'void change(Painter draw);''void void(Painter&draw);'工作? – drescherjm

+1

@drescherjm我在想,太多,但看起來還行(http://stackoverflow.com/questions/553682/when-can-i-use-a-forward-declaration) –

+0

感謝的人快速回答:) – CROmpir