Я пытаюсь преобразовать QBytearray в QVector<QVector3D>.
extern "C" {
typedef struct {
double **vertexes;
int top_rows_vertexes;
int top_column_vertexes;
double **edges;
int top_rows_edges;
int top_column_edges;
}MATRIX;
int start_processing(const char * file_name, MATRIX *date);
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// сишная часть тут создаем структуру получаем имя файла и запускаем нашу сишную функцию
MATRIX A;
QString name = "../../test.obj";
QByteArray str_name;
str_name += name;
int result = start_processing(str_name, &A);
// тут наполняем массив 3Д координатами
QVector<QVector3D> coords;
for (int i = 0; i < A.top_rows_vertexes; ++i) {
coords.append(QVector3D(A.top_rows_vertexes[0][0], A.vertexes[0][1], A.vertexes[0][2]));
}
но я получаю сообщение об ошибке. "неверный тип 'int[int]' для индекса массива" Мне нужна помощь. Я прошу вас объяснить как можно проще, потому что я только учусь.
я пробовал менять тип массива с double на float... не помогло
A.top_rows_vertexes[0][0] --> A.vertexes[0][0]. Как и два других аргумента.
Вершины @molbdnilo тоже в порядке merriam-webster.com/dictionary/vertex
Что такое «верхний столбец»? Крайний левый столбец?





int top_rows_vertexes;
Это простое целое число
A.top_rows_vertexes[0][0]
Здесь вы пытаетесь индексировать в целое число, что, очевидно, не сработает.
Вы, вероятно, захотите индексировать vertexes, как и в других случаях:
coords.append(QVector3D(A.vertexes[0][0], A.vertexes[0][1], A.vertexes[0][2]));
Но это тоже довольно подозрительно. Предположительно, вы хотели бы использовать здесь переменную цикла, так что, возможно,
coords.append(QVector3D(A.vertexes[i][0], A.vertexes[i][1], A.vertexes[i][2]));
полное сообщение об ошибке содержит информацию о номере строки и переменных. Я думаю, это относится к
A.top_rows_vertextex[0][0].top_rows_vertexesэтоint