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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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);
}