crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QTestLib - добавление массивов в таблицу данных
Гость_Иван_*
сообщение 11.10.2010, 16:03
Сообщение #1





Гости








    


Здравствуйте!
Сталкнулся сегодня с такой проблемой - не получается добавить в таблицу данных статический массив(ы).
Хотел добавить указатель на первый элемент и количество элементов, при компиляции VS 2008 выдает ошибку: error C2039: qt_metatype_id: не является членом "QMetaTypeId<T>".
Использовал следующую команду: QTest::addColumn<int*>("arr");

Кто нибудь может уже сталкивался с подобным - подскажите решение, пожалуйста!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Иван_*
сообщение 14.10.2010, 22:20
Сообщение #2





Гости








    


неужели, ни у кого нет никаких соображений по этому поводу?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 14.10.2010, 22:57
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


a Q_OBJECT не забыл в своём классе ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 14.10.2010, 23:10
Сообщение #4


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(Алексей1153 @ 14.10.2010, 23:57) *
a Q_OBJECT не забыл в своём классе ?
Q_OBJECT здесь ни при чём. Просто нужно зарегистрировать указатель на int как метатип
Q_DECLARE_METATYPE(int*)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Иван_*
сообщение 15.10.2010, 12:16
Сообщение #5





Гости








    


Цитата(igor_bogomolov @ 14.10.2010, 23:10) *
Цитата(Алексей1153 @ 14.10.2010, 23:57) *
a Q_OBJECT не забыл в своём классе ?
Q_OBJECT здесь ни при чём. Просто нужно зарегистрировать указатель на int как метатип
Q_DECLARE_METATYPE(int*)



Конечно, я так пробовал делать, пробовал также сначала typedef'ом переопределять int*, а потом уже регистрировать его как метатип:
typedef  int* ptr;
Q_DECLARE_METATYPE(ptr)


Visual Studio 2008 ругается: qt_metatype_id: не является членом "QMetaTypeId<T>"

Вот собственно упрощенный вариант *.h файла класса-тестировщика:
#include <QtTest>

class Test_MyMathFunction : public QObject
{
Q_OBJECT
private slots:
    void sumArrayt_data();
    void sumArrayt();
};

void Test_MyMathFunction::sumArrayt_data()
{
    QTest::addColumn<int>("arr");
    int arr[5] = {1, 3, 0, -2, 4};
    QTest::newRow("Test1") << 0;
}

void Test_MyMathFunction::sumArrayt()
{
    QFETCH(int, arr);
}

QTEST_MAIN(Test_MyMathFunction)
#include "main.moc"


Требуется создавать колонку и записывать туда не int, а int*, ну и соответственно, вместо нуля писать arr
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 15.10.2010, 13:14
Сообщение #6


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


#include <QtTest>

Q_DECLARE_METATYPE(int *)

class Test_MyMathFunction : public QObject
{
    Q_OBJECT
private slots:
    void sumArrayt_data();
    void sumArrayt();
};

void Test_MyMathFunction::sumArrayt_data()
{
    int arr[5] = {1, 3, 0, -2, 4};
    int *a = arr;

    QTest::addColumn<int*>("arr");
    QTest::newRow("Test1") << a;
}

void Test_MyMathFunction::sumArrayt()
{
    QFETCH(int*, arr);
}

QTEST_MAIN(Test_MyMathFunction)
#include "tst_testtest.moc"
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Иван_*
сообщение 15.10.2010, 16:08
Сообщение #7





Гости








    


Огромнейшее человеческое Спасибо вам! Правда не совсем понятно, почему не получается записать просто arr, ведь это и ест указатель на int?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 21.12.2024, 19:52