2015-03-25 3 views
-4
spectre=spectrum->dft(uhd_samples,Ndft,noise_power); 
    bool conclusion=stat->test(noise_power,&spectre,Ndft,lambda,Nsamples); 

У меня было 2 ошибки в Qt Creator:как определить матрицу в mainwindow.cpp C++

/home/hoss/cdf/mainwindow.cpp:45: error: cannot convert 'Matrix {aka std::vector<std::vector<float> >}' to 'MainWindow::Matrix*' in assignment 
     spectre=spectrum->dft(uhd_samples,Ndft,noise_power); 

/home/hoss/cdf/mainwindow.cpp:46: error: no matching function for call to 'AD_test::test(float&, MainWindow::Matrix**, int&, float&, int&)' 
     bool conclusion=stat->test(noise_power,&spectre,Ndft,lambda,Nsamples); 
                      ^

dft возвращает матрицу, так что я должен определить спектр как матрицы. Я попытался создать struct matrix ... но ничего не изменилось.

ответ

0

Первая ошибка заключается в том, что вы пытаетесь присвоить значение указателю. Поскольку dft(..) возвращает значение, вы должны изменить свою переменную spectre, чтобы сохранить ее копию. Также не совсем ясно, являются ли Matrix и MainWindow::Matrix одинаковыми - они должны быть успешными для присвоения (или, по крайней мере, быть неявно конвертируемыми).

Вторая ошибка вероятно (вы не предоставили реальную подпись AD_test::test(..)), потому что spectre является MainWindow::Matrix* и вы принимаете адрес его снова приводит к MainWindow::Matrix**, когда более вероятно, он требует MainWindow::Matrix* поэтому исправление первой проблемы также должно решить эту проблему.

Смежные вопросы