2015-12-22 1 views
0

Я пытаюсь удерживать полиномиальные коэффициенты в QVector. Мои многочлены имеют степень 2, поэтому она имеет три числа.QVector массивов в C++

Когда я определяю QVector<double[3]> zeros_Real(n + 1) У меня есть сообщение (ниже). Во-первых, я думал, что могу использовать QVector<QVector<double>>, но это будет проблема скорости и памяти, поэтому я решил не делать этого.

Почему у меня нет QVector из double[3] элементов?

Ошибка:

mingw32-make[1]: *** [debug/main.o] Error 1 
mingw32-make: *** [debug] Error 2 
21:27:01: The process "C:\Qt\Tools\mingw492_32\bin\mingw32-make.exe" exited with code 2. 
Error while building/deploying project untitled11 (kit: Desktop Qt 5.5.1 MinGW 32bit) 
When executing step "Make" 

ответ

4

QVector (как std::vector) требует, чтобы его элементы, чтобы быть копируемой (он должен копировать элементы во перераспределении). Массивы могут не быть скопированы, что означает, что вы не можете иметь QVector<double[3]>.

Рабочий альтернативой является использование std::array (C++ 11 или более поздней):

QVector<std::array<double, 3>> 

Какой могут быть скопированы. Qt не имеет собственного QArray, поэтому вам нужно смешать стандартную библиотеку и контейнеры Qt следующим образом.

+0

Ваш ответ потрясающий, но я не могу назвать массив вызовов или std :: array, который я определил с помощью пространства имен std и уже включил библиотеку массива. – massaimara98

+0

Какая ошибка? Вы компилируете его как C++ 11 или более поздней? – LogicStuff

+0

там никакой ошибки, только я наклоняю вызов, я имею в виду не из CTRL + Space. Я использую Qt Creater 3.5.1 и Qt версии 5.5.1, которые я не знаю, какой компилятор версии на C++? – massaimara98