2016-03-24 2 views
1

ich den folgenden Compiler-Fehler erhalten, die ich zu beheben bin zu kämpfen:C++ Struktur/Vektor-Compile Probleme

Fehler C3867: 'std :: vector> :: at': Funktionsaufruf fehlenden Argument Liste; '& std :: vector> :: at' verwenden, um einen Zeiger auf Member

Mein Code zu erstellen ist:

struct coord_type { 
    int x; 
    int y; 
}; 

struct elements_type { 
    vector <coord_type> my_coord; 
    coord_type item2; 
    coord_type item3; 
}; 

Und die Funktion mit dem Fehler ist:

void position_time(data_type data) 
{ 
    int  i; 
    coord_type position; 

    for (i = data.elements.my_coord.size() - 1; i > 0; i--) { 
     position = data.elements.my_coord.at[i]; 
    } 
} 

Jede Idee Wie behebt man das?

+0

.at ist eine Funktion verwenden Sie stattdessen .at (i). – DimChtz

Antwort

1

at ist eine Funktion, die als Parameter einen Index zu den gewünschten Daten verwendet. Sie haben 2 Möglichkeiten:

  • ändern [i] in (i) (weil es eine Funktion)
  • Zugang der Index traditionelle Array-Notation (data.elements.my_coord[i])
1

mit der Wenn Sie den Vektor zu durchqueren wollen, besser zu Verwenden Sie Iterator, hier verwenden Sie Reverse Iterator ist besser.

void position_time(data_type data) 
{ 
    coord_type position; 
    for_each(data.elements.my_corrd.rbegin(), data.elements.my_corrd.rend(), [&](coord_type& ct){position = ct;}); 
}