2014-12-23 158 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