qt类的第一块是:
class Q_GUI_EXPORT QTransform
{
public:
enum TransformationType {
TxNone = 0x00,
TxTranslate = 0x01,
TxScale = 0x02,
TxRotate = 0x04,
TxShear = 0x08,
TxProject = 0x10
};
很明显,它不是私人的。
现在,当我尝试编译程序时,编译器会抱怨以下行:
QGraphicsScene scene;
item = scene.itemAt(50, 50, QTransform::TxNone);
它给了我:
错误:“ QTransform :: QTransform(bool)”是私有的
inline QTransform(bool)
^
其次是:
错误:在这种情况下
item = scene.itemAt(50,50,QTransform::TxNone);
^
但是我不知道是什么使编译器认为
QTransform::TxNone
是无法调用QTransform方法的。那我在做什么错?
以及如何弄清楚我不是在引用方法,而是在我发布的第一个片段中看到的类的公共枚举?
最佳答案
这是问题所在:
QGraphicsItem * QGraphicsScene::itemAt(qreal x, qreal y, const QTransform & deviceTransform) cons
它接受一个
QTransform
对象...QTransform()
QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33 = 1.0)
QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)
QTransform(const QMatrix & matrix)
但是没有构造函数可以将使用的枚举转换为转换对象
关于c++ - 编译器在使用公共(public) bool 时提示'QTransform::QTransform(bool)'是私有(private)的,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35839802/