Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

No matching function, problem z wektorem wektorów

Ostatnio zmodyfikowano 2015-12-02 13:40
Autor Wiadomość
cygan123
Temat założony przez niniejszego użytkownika
No matching function, problem z wektorem wektorów
» 2015-11-30 14:05:06
Witam.

W swoim kodzie próbuję jako argument funkcji wykorzystać wektor wektorów przy pomocy zwykłego wektora oraz wektora3d z biblioteki eigen.

Kod funkcji prezentuje się następująco.(środek jeszcze nie zrobiony, gdyż napotkałem problemy szybciej)


template <typename T>
void print(urg_t *urg, long data[], unsigned short intensity[],
                       int data_n, long time_stamp,std::vector<Eigen::EigenBase<T> > & C,int ColsIteration)
{

    (void)urg;//wyswietlanie calego pomiaru

 
 printf("# n = %d, time_stamp = %ld\n", data_n, time_stamp);
   for (int i = 0; i < data_n; ++i) {
       printf("%d, %ld, %d\n", i, data[i], intensity[i]);
    
       C(i,ColsIteration) =static_cast<double>(data[i]);
          }
}
Wywołanie oraz konstruktor wektorów

std::vector<Eigen::Vector3d> Measures;

print(&urg, data, intensity, n, time_stamp, Measures,ColsIteration);


Przy kompilacji wyświetlają się następujące błędy:

 error: no matching function for call to ‘print(urg_t*, long int*&, short unsigned int*&, int&, long int&, std::vector<Eigen::Matrix<double, 3, 1> >&, int&)’

 note: candidate is:
: note: template<class T> void print(urg_t*, long int*, short unsigned int*, int, long int, std::vector<Eigen::EigenBase<Derived> >&, int)

Nie za bardzo jestem w stanie sobie z tym poradzić, próbowałem już kilku metod m.in. tych podanych w dokumentacji Eigena, ale nie za bardzo zadziałały.

Z góry dzięki za pomoc
P-141165
darko202
» 2015-11-30 14:15:08
1.
co to jest ?
urg_t *urg

nie widać w załączonym kodzie

2.
no matching function  : to znaczy nie ma funkcji pasującej

void print(urg_t *urg,...

np. nie widzi
itp.
 
P-141167
cygan123
Temat założony przez niniejszego użytkownika
» 2015-11-30 14:24:35
Dzięki za szybką odpowiedź. Te rzeczy o których mówisz, one wszystkie znajdują się w kodzie, po prostu nie zamieszczałem całego kodu. Problem pojawił się po umieszczeniu w tej funkcji własnie tego wektora.
P-141169
Monika90
» 2015-11-30 14:26:56
no matching function  : to znaczy nie ma funkcji pasującej
Nie. To znaczy że nie udało się wydedukować parametru szablonu T.

Zastąp std::vector<Eigen::EigenBase<T>> przez std::vector<T>
P-141170
cygan123
Temat założony przez niniejszego użytkownika
» 2015-11-30 14:35:35
Również dzięki za odpowiedź.Po zamianie:



void print(urg_t *urg, long data[], unsigned short intensity[],
                       int data_n, long time_stamp,std::vector<T> & C,int ColsIteration)


Kompilator zaczął wyświetlać


In function ‘void print(urg_t*, long int*, short unsigned int*, int, long int, std::vector<_Tp>&, int) [with T = Eigen::Matrix<double, 3, 1>]’: instantiated from here
main.cpp:38:8: error: no match for call to ‘(std::vector<Eigen::Matrix<double, 3, 1> >) (int&, int&)’

P-141171
j23
» 2015-11-30 14:37:31
...
P-141172
Monika90
» 2015-11-30 15:00:23
C to jest std::vector, nie da się na nim wykonać operacji C(i,ColsIteration), być może chodziło ci o C[i][ColsIteration]
P-141173
cygan123
Temat założony przez niniejszego użytkownika
» 2015-11-30 16:00:10
Ta część jest wykomentowana, sam nie wiem dlaczego wrzuciłem tutaj wersję bez tego. To jest pozostałość po macierzy. Problem w tym, że wersja z macierza działała, a po zmianie na wektor pojawiają się powyższe błędy.
P-141177
« 1 » 2
  Strona 1 z 2 Następna strona