С++, повернення внутрішньою масиву з класу
Тестування, яке нотаток. С++, Qt5.
#include
#include
class class1{
public:
class1(){
qDebug(“=== constructor class1”);
m_w=10;
qDebug()«“class1::array size”«m_w;
m_a= new uchar[m_w];
m_a[0]=’Z’;
}
void getArray(int &w, uchar *&a)
{
qDebug(“=== getArray”);
w=m_w;
a=m_a;
}
uchar *getArrayRet(int &w){
qDebug(“=== getArrayRet”);
w=m_w;
return m_a;
}
void eraseArray()
{
qDebug(“=== eraseArray”);
delete[]m_a;
m_a=nullptr;
qDebug()«“eraseArray m_a”«m_a;
}
void printArray()
{
qDebug(“=== printArray inside”);
if (m_a) qDebug()«“class1::getArray2”«m_a«*m_a«(char)m_a[0];
}
private:
uchar *m_a;
int m_w;
};
int main(int argc, char *argv[])
{
uchar *array=nullptr;
int sizearray=0;
class1 *c1=new class1();
c1->getArray(sizearray,array);
qDebug()«“Array ptr ret”«array«sizearray;
if (array) qDebug()«“array[0]”«array[0];
c1->printArray();
c1->eraseArray();
array=c1->getArrayRet(sizearray);
qDebug()«“Array ptr getArrayReturn”«array«sizearray;
if (array) qDebug()«“array[0]”«array[0];
c1->getArray(sizearray,array);
qDebug()«“Array ptr getArray”«array«sizearray;
if (array) qDebug()«“array[0]”«array[0];
QCoreApplication a(argc, argv);
return a.exec();
}
Результат:
=== constructor class1
class1::array size 10
=== getArray
Array ptr ret 0x262fc6a1dc0 10
array[0] 90
=== printArray inside
class1::getArray2 0x262fc6a1dc0 90 Z
=== eraseArray
eraseArray m_a 0x0
=== getArrayRet
Array ptr getArrayReturn 0x0 10
=== getArray
Array ptr getArray 0x0 10