声明的 QOBJECT 宏

发布于 2024-11-29 04:17:19 字数 2635 浏览 4 评论 0原文

我已经声明了 QOBJECT 宏,但仍然调用该函数而不传递 QObject 对象

这是我的代码 keyusermanagertest.cpp

#define private public
#define protected public
#include "keyusermanagertest.h"
#include "storageusermanager.h"
#include "keyusermanager.h"
#include "alkuser.h"
#undef protected
#undef private

#include <QDebug>
#include <QtTest/QtTest>

QTEST_MAIN(KeyUserManagerTest)

void KeyUserManagerTest::init()
{

}

void KeyUserManagerTest::cleanup()
{
}

void KeyUserManagerTest::test_initialization()
{
// Already tested under BackendTest::test_initialization()

}

void KeyUserManagerTest::settersAndGetters()
{
    AlkUser userInfo;
    QString user="Puneet Goyal";
    StorageUserManager* storageuser=new StorageUserManager();
    KeyUserManager* keyuser=new KeyUserManager(storageuser);
    keyuser->updateUserData(user,userInfo);
    qDebug()<<"UPDATION DONE!!!!";
// Now setting the rest of the details for user Puneet Goyal using AlkUser Object

    userInfo.setName("Puneet");
    userInfo.setContact("21897121");
    userInfo.setType("savings");
    userInfo.setAccount("123456789");   
    userInfo.setAmount("100000");

// Now retrieving all the user details using KeyUserManager Object
    QVariant vari=keyuser->getUserInfo("Puneet Goyal");

}

keyusermanagertest.h

#ifndef KEYUSERMANAGERTEST_H
#define KEYUSERMANAGERTEST_H

#include <QtCore/QObject>

class KeyUserManager;

class KeyUserManagerTest : public QObject
{
  Q_OBJECT

private slots:

  void init();
  void cleanup();
  void test_initialization();
  void settersAndGetters();
};

#endif

其编译输出如下” /home/puneet/puneet/office/alkimia/ payment/backend/keyusermanagertest.cpp:在成员函数 'void KeyUserManagerTest::settersAndGetters()' 中: /home/puneet/puneet/office/alkimia/ payment/backend/keyusermanagertest.cpp:52: 错误: 没有调用“StorageUserManager::StorageUserManager()”的匹配函数 /home/puneet/puneet/office/alkimia/ payment/backend/storageusermanager.h:41:注意:候选人是:StorageUserManager::StorageUserManager(QObject*) /home/puneet/puneet/office/alkimia/ payment/backend/storageusermanager.h:37: 注意:StorageUserManager::StorageUserManager(const StorageUserManager&) /home/puneet/puneet/office/alkimia/ payment/backend/keyusermanagertest.cpp:53: 错误: 没有调用“KeyUserManager::KeyUserManager(StorageUserManager*&)”的匹配函数 /home/puneet/puneet/office/alkimia/ payment/backend/keyusermanager.h:44:注意:候选人是:KeyUserManager::KeyUserManager(StorageUserManager*, QObject*) /home/puneet/puneet/office/alkimia/ payment/backend/keyusermanager.h:41: 注意:KeyUserManager::KeyUserManager(const KeyUserManager&)

谢谢

I have declared QOBJECT macro but still its calling the function without passing the QObject object

Here is my code
keyusermanagertest.cpp

#define private public
#define protected public
#include "keyusermanagertest.h"
#include "storageusermanager.h"
#include "keyusermanager.h"
#include "alkuser.h"
#undef protected
#undef private

#include <QDebug>
#include <QtTest/QtTest>

QTEST_MAIN(KeyUserManagerTest)

void KeyUserManagerTest::init()
{

}

void KeyUserManagerTest::cleanup()
{
}

void KeyUserManagerTest::test_initialization()
{
// Already tested under BackendTest::test_initialization()

}

void KeyUserManagerTest::settersAndGetters()
{
    AlkUser userInfo;
    QString user="Puneet Goyal";
    StorageUserManager* storageuser=new StorageUserManager();
    KeyUserManager* keyuser=new KeyUserManager(storageuser);
    keyuser->updateUserData(user,userInfo);
    qDebug()<<"UPDATION DONE!!!!";
// Now setting the rest of the details for user Puneet Goyal using AlkUser Object

    userInfo.setName("Puneet");
    userInfo.setContact("21897121");
    userInfo.setType("savings");
    userInfo.setAccount("123456789");   
    userInfo.setAmount("100000");

// Now retrieving all the user details using KeyUserManager Object
    QVariant vari=keyuser->getUserInfo("Puneet Goyal");

}

keyusermanagertest.h

#ifndef KEYUSERMANAGERTEST_H
#define KEYUSERMANAGERTEST_H

#include <QtCore/QObject>

class KeyUserManager;

class KeyUserManagerTest : public QObject
{
  Q_OBJECT

private slots:

  void init();
  void cleanup();
  void test_initialization();
  void settersAndGetters();
};

#endif

Its compile output is as follows"
/home/puneet/puneet/office/alkimia/payment/backend/keyusermanagertest.cpp: In member function ‘void KeyUserManagerTest::settersAndGetters()’:
/home/puneet/puneet/office/alkimia/payment/backend/keyusermanagertest.cpp:52: error: no matching function for call to ‘StorageUserManager::StorageUserManager()’
/home/puneet/puneet/office/alkimia/payment/backend/storageusermanager.h:41: note: candidates are: StorageUserManager::StorageUserManager(QObject*)
/home/puneet/puneet/office/alkimia/payment/backend/storageusermanager.h:37: note: StorageUserManager::StorageUserManager(const StorageUserManager&)
/home/puneet/puneet/office/alkimia/payment/backend/keyusermanagertest.cpp:53: error: no matching function for call to ‘KeyUserManager::KeyUserManager(StorageUserManager*&)’
/home/puneet/puneet/office/alkimia/payment/backend/keyusermanager.h:44: note: candidates are: KeyUserManager::KeyUserManager(StorageUserManager*, QObject*)
/home/puneet/puneet/office/alkimia/payment/backend/keyusermanager.h:41: note: KeyUserManager::KeyUserManager(const KeyUserManager&)

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很糊涂小朋友 2024-12-06 04:17:19

将构造函数添加到您的 KeyUserManagerTest -
在 header add

KeyUserManagerTest (QObject* parent=0);

和 cpp

KeyUserManagerTest::KeyUserManagerTest(QObject* parent):QObject(parent){};

QOBJECT 宏中不会为您创建构造函数!

Add constructor to your KeyUserManagerTest -
in header add

KeyUserManagerTest (QObject* parent=0);

and in cpp

KeyUserManagerTest::KeyUserManagerTest(QObject* parent):QObject(parent){};

QOBJECT macro does not create constructor for you!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文