无法在分配中将'int*'转换为'ABC*'

cannot convert 'int*' to 'ABC*' in assignment

本文关键字:转换 ABC int 分配      更新时间:2023-10-16

我搞不清这个小编译错误。。。

文件.h

    #ifndef FILE_H
    #define FILE_H
    class ABC: public QWidget
    {
        Q_OBJECT
    public:
        ABC(QWidget* parent) : QWidget(parent)
        {       
    ..
        }
    ..
    };
    class BCD : public QDialog
    {
    ....
        ABC* m_abc;
    };
#endif

在文件.cpp 中

#include "file.h"
BCD::BCD()
{
  ....
    m_abc = new ABC::ABC(ui->frame);   /// line with errors
}

获取错误

expected type specifier
cannot convert 'int*' to 'ABC*' in assignment
expected ;

所以我试着去研究这个错误的原因。。。并检查可能的问题。。。(就像这个问题中的错误:在';ClassName';之前需要类型说明符)

我的包含警卫很好,课程设置很好,intelligense找到所有符号。。。

将线路更改为

m_abc = new ::ABC::ABC(ui->frame); 

导致错误:

expected type specifier before :: token
cannot convert 'int*' to 'ABC*' in assignment
expected ; before '::' token

我在哪里可以找到我的错误?

抱歉,我无法列出整个代码。

new ABC::ABC(ui->frame)应为new ABC(ui->frame)

你把构造函数调用错了。

原因是ABC::ABC在名称空间ABC中查找类ABC(您可能没有,因此它默认为int),但如果您只使用ABC,它将在当前名称空间中找到ABC