Объявлен макрос QOBJECT - PullRequest
       9

Объявлен макрос QOBJECT

0 голосов
/ 13 августа 2011

Я объявил макрос 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: note: StorageUserManager :: StorageUserManager (const StorageUserManager &) / home / puneet / p/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: note: KeyUserManager :: KeyUserManager (const KeyUserManager &)

Спасибо

1 Ответ

1 голос
/ 13 августа 2011

Добавить конструктор к вашему KeyUserManagerTest - в заголовок добавить

KeyUserManagerTest (QObject* parent=0);

и в кпп

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

Макрос QOBJECT не создает конструктор для вас!

...