QT开发出现大量的编译器报错,如何解决?


QT开发碰到的问题:
出现大量的编译器报错,
但是QT Creator只显示编译器报错,
没有显示具体是哪一条语句导致报错,
不知道如何去修改代码。
请高人指点迷津。
 error: 'QTableWidget::QTableWidget(const QTableWidget&)' is private within this context
             new (dstFrom++) T(*srcFrom++);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: use of deleted function 'QTableWidget::QTableWidget(const QTableWidget&)'
             new (dstFrom++) T(*srcFrom++);
             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error: 'QTableWidget::QTableWidget(const QTableWidget&)' is private within this context
                                 new (dst++) T(*srcBegin++);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
error: use of deleted function 'QTableWidget::QTableWidget(const QTableWidget&)'
                                 new (dst++) T(*srcBegin++);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
error: 'QTableWidget::QTableWidget(const QTableWidget&)' is private within this context
                                 new (dst++) T(std::move(*srcBegin++));
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
error: use of deleted function 'QTableWidget::QTableWidget(const QTableWidget&)'
                                 new (dst++) T(std::move(*srcBegin++));
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

“Devil组”引证GPT后的撰写:

  • 这些错误提示是在使用复制构造函数(copy constructor)时出现的,因为QTableWidget类的复制构造函数被设为私有,无法在类外进行调用,因此在使用该函数时会出现上述错误。

通常情况下,复制构造函数会在以下场景下被调用:

  • 当对象以值的方式传递给函数时;

  • 当对象以值的方式从函数返回时;

  • 当对象进行初始化或赋值操作时。

解决方法:

  • 在代码中,尝试使用复制构造函数时,需要替换为其他的方法,例如使用move语义、使用对象指针或引用等。如果不确定如何修改代码,可以将出错的代码片段贴出来,我们一起来分析。
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^