empire.cpp:189:42: error: 'getColor' is a private member of 'Playable' empire.h:42:14: note: constrained by implicitly private inheritance here county.h:15:18: note: member is declared here
时间: 2024-02-06 20:02:19 浏览: 113
这个错误通常是因为尝试在Playable类的外部访问其私有成员函数getColor()。
在这种情况下,可能需要在类定义中增加一个公有的接口函数,允许外部访问getColor()函数。
例如,在Playable类中添加一个公有的getColor()函数:
```c++
class Playable : public County {
public:
// 公有接口函数
QColor getColor() const {
return m_color;
}
private:
// 私有成员函数
virtual QColor generateColor() const {
// 生成颜色的代码
}
QColor m_color;
};
```
然后在Empire类中,可以使用Playable类的公有接口函数来获取颜色:
```c++
class Empire {
public:
void printColor() const {
Playable playable;
QColor color = playable.getColor();
qDebug() << "Color: " << color.name();
}
};
```
这样就可以在Empire类中访问到Playable类的颜色了。
注意:如果是Playble类的派生类,可以通过protected访问基类的私有成员函数。但是,在其他类中,不能直接访问基类的私有成员函数。
阅读全文