en passant d'un vecteur en fonction de c++
J'ai un main.cpp test.h et de test.rpc> je suis en train de passer mon vecteur à travers ce que je peux l'utiliser dans test.cpp mais je continue à recevoir des erreurs.
//file: main.cpp
int main(){
vector <Item *> s;
//loading my file and assign s[i]->name and s[i]-address
tester(s);
}
//file: test.h
#ifndef TEST_H
#define TEST_H
struct Item{
string name;
string address;
};
#endif
//file: test.cpp
int tester(Item *s[]){
for (i=0; i<s.sizeof();i++){
cout<< s[i]->name<<" "<< s[i]->address<<endl;
}
return 0;
}
---------------errors--------
In file included from main.cpp:13:
test.h:5: error: âstringâ does not name a type
test.h:6: error: âstringâ does not name a type
main.cpp: In function âint main()â:
main.cpp:28: error: cannot convert âstd::vector<Item*, std::allocator<Item*> >â to âItem**â for argument â1â to âint tester(Item**)â
- le std::vector type n'est pas un tableau, c'est juste agit comme un tableau. Vous avez pour changer le Point *s[] pour std::vector<Article>
Vous devez vous connecter pour publier un commentaire.
Un
std::vector<T>
etT* []
ne sont pas des types compatibles.Changer votre
tester()
signature de fonction comme suit:Il existe plusieurs façons vous pouvez passer cette
std::vector<T>
et ont tous des significations légèrement différentes:Passer comme
std::vector<Item *> &
(référence à l'vecteur) et d'utiliser un itérateur pour parcourir en elle.#include <string>
.string name
devrait lirestd::string name
etc. En va de même pourstd::vector
.tester()
avec unvector
, mais il attend un tableau (les deux ne sont pas interchangeables).s.sizeof()
est incorrect pour à la fois d'une matrice et d'un vecteur; pour ces derniers, l'utilisations.size()
ou, mieux encore, utiliser un itérateur.Ce sont juste les erreurs immédiatement sauter; il peut être plus.
Un
vector
n'est pas un tableau.(passer comme une référence pour éviter de copier ou si vous avez besoin de modifier)
Vous devez également modifier votre code à l'intérieur de la
tester
fonction fonctionne correctement en tant que vecteur.Vous devriez résoudre
première, probablement par
using namespace std;
et#include <string>
Il vous manque comprend
et vous avez besoin d'utiliser
std::string
etstd::vector<>
. Unstd::vector
n'est pas un tableau, vous devez passer le vecteur de référenceou même comme
const std::vector<Item*> &
si vous n'allez pas modifier le vecteur passé.Aussi, êtes-vous sûr que vous aurez besoin d'un vecteur de pointeurs? Qu'essayez-vous de réaliser?