QVector::contains терпит неудачу при проверке констант
Среда, как указано в тегах:
GCC 64-разрядная, Qt 5.12
У меня есть следующий пример кода:
// test.h
#include <QVector>
class Test
{
Test();
// Same results with QSet
const QVector<int> things = {
BANANA,
RASPBERRY,
APPLE,
-2500,
};
const int BANANA = -1000;
const int RASPBERRY = -2000;
const int APPLE = -3000;
};
// test.cpp
#include <QDebug>
#include "test.h"
Test::Test()
{
qDebug() << things.contains(APPLE); // false, expected true
qDebug() << things.contains(-3000); // false, expected true
qDebug() << things.contains(-2500); // true, expected true
}
Я не понимаю, сделал ли я что-то не так в определениях или обнаружил ошибку в Qt.
1 ответ
Решение
Кажется, я пытался использовать постоянные переменные, которые еще не определены
// test.h
#include <QVector>
class Test
{
Test();
// Moved them above QVector
const int BANANA = -1000;
const int RASPBERRY = -2000;
const int APPLE = -3000;
const QVector<int> things = {
BANANA,
RASPBERRY,
APPLE,
-2500,
};
};
// test.cpp
#include <QDebug>
#include "test.h"
Test::Test()
{
// Now the tests pass as expected
qDebug() << things.contains(APPLE); // true, expected true
qDebug() << things.contains(-3000); // true, expected true
qDebug() << things.contains(-2500); // true, expected true
}
Не ошибка в QT!