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

Кто нибудь может уже сталкивался с подобным - подскажите решение, пожалуйста!
Иван
неужели, ни у кого нет никаких соображений по этому поводу?
Алексей1153
a Q_OBJECT не забыл в своём классе ?
igor_bogomolov
Цитата(Алексей1153 @ 14.10.2010, 23:57) *
a Q_OBJECT не забыл в своём классе ?
Q_OBJECT здесь ни при чём. Просто нужно зарегистрировать указатель на int как метатип
Q_DECLARE_METATYPE(int*)
Иван
Цитата(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
#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"
Иван
Огромнейшее человеческое Спасибо вам! Правда не совсем понятно, почему не получается записать просто arr, ведь это и ест указатель на int?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.