如何将类A中的数组传递给B类中的函数

时间:2017-09-21 10:47:27

标签: c++ qt

我有这个问题,从myclass对象发送数组到名为receive()的myclass2函数。数组的名称是myclass中的probesTab1。

我尝试使用connect方法来执行此操作。

我有这个错误: 对myclass2 :: receive(int *)

的未定义引用

我确信这是一些基本知识,但我不能动了几天。

“myclass.h”

#ifndef MYCLASS_H
#define MYCLASS_H

#include <QObject>

class myclass : public QObject
{
   Q_OBJECT

public:

   explicit myclass(QObject *parent = nullptr);

   int probesTab1[3];

signals:

   void pass(int * tab);

public slots:
};

#endif // MYCLASS_

myclass2.h

#ifndef MYCLASS2_H
#define MYCLASS2_H
#include <QObject>

class myclass2 : public QObject
{
    Q_OBJECT

public:

    myclass2();
    int array[3];

public slots:

    void receive(int *tab);
};

#endif // MYCLASS2_H

#include "mainwindow.h"
#include <QApplication>
#include <QDebug>
#include "myclass.h"
#include "myclass2.h"

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

myclass Class1;
myclass2 Class2;

for(int i = 0; i<3 ; i++)
{
Class1.probesTab1[i] = i;      
//I need this array to go into myclass2 function named receive()
}

int *ptr;
ptr = Class1.probesTab1;

QObject::connect(&Class1,SIGNAL(pass(int)),&Class2,SLOT(receive(int)));

emit Class1.pass(ptr);


return a.exec();
}

myclass2.cpp

#include "myclass2.h"
#include <QDebug>

myclass2::myclass2()
{
}

void receive(int values[])
{
   for(int i = 0; i<3; i++)
{
    qDebug() << values[i];
}
}

1 个答案:

答案 0 :(得分:-3)

最好以here所述的特定方式进行此类操作。

但在练习时,请详细了解QObject::connect

只需更改连接

即可
 QObject::connect(&Class1,SIGNAL(pass(int*)),&Class2,SLOT(receive(int*)));

并接收功能

void myclass2::receive(int *values)
{
    for(int i = 0; i<3; i++)
    {
        qDebug() << values[i];
    }
}