NameTest工程中
nametest.cpp

NameTest::NameTest()
{
    pdata = new privateAB;
}

NameTest::~NameTest()
{
    if (pdata)
    {
        privateAB *p = (privateAB *)pData;   //void *pdata = nullptr;
        delete p;
        pdata = nullptr;
    }
}

内部类:
privateAB

#include "private.h"

#include 
#include 

privateAB::privateAB()
{
    std::cout << "NameTest:[privateAB]:privateAB" << std::endl;
}

privateAB::~privateAB()
{

}

NameTest01工程中

#include "nametest01.h"
#include "private.h"

NameTest01::NameTest01()
{
    pdata = new privateAB;   //void *pdata = nullptr;
}

NameTest01::~NameTest01()
{
    if (pdata)
    {
        privateAB *p = (privateAB *)pData;
        delete p;
        pdata = nullptr;
    }
}

内部类:
privateAB

#include "private.h"

#include 
#include 

privateAB::privateAB()
{
    std::cout << "NameTest01:[privateAB]:privateAB" << std::endl;
}

privateAB::~privateAB()
{

}

以上两个工程是封装成库的,并被下面的程序调用。

#include 

#include "nametest.h"
#include "nametest01.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    NameTest aa;
    NameTest01 bb;

    return a.exec();
}

如上,在两个工程中,有同样的内部类,但是windows上输出的结果和在linux上的输出的结果是不同的。

结果如下:
windows上的:
【Qt】 new成功,但是没有进入到构造函数。插图
linux上的:
【Qt】 new成功,但是没有进入到构造函数。插图(1)
在linux中,如果出现同样的内部类,虽然是在不同的内部类内使用,但是还是会有问题的,这样就导致了new成功但是没有进入到构造函数中

当然了,new不成功的情况还是有很多种的。

本站无任何商业行为
个人在线分享 » 【Qt】 new成功,但是没有进入到构造函数。
E-->