probleme de gestion des <vector> dans plusieurs classes
Bonjour a tous,
je débute en c++ et je teste les conteneurs <vector>.
J'ai un soucis avec mon code, je n'ai pas de problème à la compilation mais lorsque je l'exécute j'ai : EXC_BAD_ACCESS et je ne comprend pas pourquoi...
voici mon code en espérant que vous pourrez m'aider. Par avance Merci.
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <iostream>
#include "ClasseA.h"
int main (int argc, char * const argv[]) {
B b;
b.setB(10);
b.setB(20);
b.setB(25);
std::cout << "b[0]" << b.GetB(0) << std::endl;
B c;
c.setB(1);
c.setB(2);
c.setB(3);
A a(&b);
a.setA(c);
std::cout << "a[0]" << std::endl;
for (unsigned i=0; i<a.GetA(0).tailleB(); i++) {
std::cout << a.GetA(0).GetB(i) << std::endl;
}
return 0;
} |
ClasseB.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| #include <vector>
class B{
public:
B();
B(const B &b);
float GetB(unsigned i) const;
void setB(float F);
unsigned tailleB()const;
protected:
std::vector<float> _vF;
}; |
ClasseB.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include "ClasseB.h"
B::B():_vF(0){}
B::B(const B &b):_vF(b.tailleB()){
for (unsigned i=0; i<b.tailleB(); i++) {
_vF.push_back(b.GetB(i));
}
}
float B::GetB(unsigned i)const{
return _vF.at(i);
}
void B::setB(float F){
_vF.push_back(F);
}
unsigned B::tailleB()const{
return _vF.size();
} |
ClasseA.h
Code:
1 2 3 4 5 6 7 8 9 10
| #include "ClasseB.h"
class A{
public:
A(B *b);
B GetA(unsigned i);
void setA(B b);
protected:
std::vector<B> *_vB;
}; |
ClasseA.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include "ClasseA.h"
//A::A():_vB(0){}
A::A(B *b){
std::vector<B> *tmp;
tmp->push_back(*b);
_vB=tmp;
//_vB->push_back(*b);
}
B A::GetA(unsigned i){
return _vB->at(i);
}
void A::setA(B b){
_vB->push_back(b);
} |