gpt4 book ai didi

c++ - 继承类的复制构造函数

转载 作者:行者123 更新时间:2023-11-28 07:14:05 25 4
gpt4 key购买 nike

我正在尝试定义一个类的复制构造函数,但我弄错了。我正在尝试使用此构造函数创建 QGraphicsRectItem 的子对象:

QGraphicsRectItem( qreal x, qreal y, qreal width, qreal height, QGraphicsItem * parent = 0 )

这里是一些代码

QtL定义的QGraphicsRectItem

QGraphicsRectItem( qreal x, qreal y, qreal width, qreal height, QGraphicsItem * parent = 0 )

Cell.h,儿子的类(class):

Cell();
Cell(const Cell &c);
Cell(qreal x, qreal y, qreal width, qreal height, QGraphicsItem * parent = 0 );

单元格.cpp:

Cell::Cell() {}

/* got error defining this constructor (copy constructor) */
Cell::Cell(const Cell &c) :
x(c.rect().x()), y(c.rect().y()),
width(c.rect().width()), height(c.rect().height()), parent(c.parent) {}


Cell::Cell(qreal x, qreal y, qreal width, qreal height, QGraphicsItem *parent) :
QGraphicsRectItem(x, y, width, height, parent) {
...
// some code
...
}

错误说:

/../../../../cell.cpp:7: error: class 'Cell' does not have any field named 'x'
/../../../../cell.cpp:7: error: class 'Cell' does not have any field named 'y'
/../../../../cell.cpp:7: error: class 'Cell' does not have any field named 'width'
/../../../../cell.cpp:7: error: class 'Cell' does not have any field named 'height'
/../../../../cell.cpp:7: error: class 'Cell' does not have any field named 'parent'

谢谢

最佳答案

您需要按如下方式制作复制构造函数:

Cell::Cell(const Cell &c)
:
QGraphicsRectItem(c.rect().x(), c.rect().y(),
c.rect().width(), c.rect().height(),
c.parent())
{}

原因是你的Cell一个QGraphicsRectItem因为继承。因此构造函数的 c 参数也代表 QGraphicsRectItem,所以你可以使用它的 QGraphicsRectItem::rect()QGraphicsRectItem::parent() 函数构造新对象 - c 的拷贝。

关于c++ - 继承类的复制构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com