Bonjour/'soir ,
voilà , je poste dans l'urgence , je suis quelque peu pressé par le temps , j'espère néanmoins que vous prêterez attention à mon problème.

Je veux faire une classe avec comme principale attributs une pile STL acceptant des std::string , j'ai défini les fonctions de base de la pile STL sur ma classe pour pouvoir y accéder facilement. A la compilation ca marche tant que n'instancie pas de pile et que je tente pas d'utliser ma méthode push().

Voilà mon code :

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
#include <stack>
 
class pile{
	//attributs
	protected:
	std::stack<std::string> p;
 
	//méthodes
	public:
	bool empty() const;
	void push(std::string&);
	//void push(std::string);
	void pop();
	int size();
	std::string& top();
 
 
};
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
23
24
25
26
27
#include <iostream>
 
#include "pile.hh"
 
bool pile::empty() const{
	return p.empty();
}
 
void pile::push(std::string& s){
	p.push(s);
}
/*
void pile::push(std::string s){
	p.push(s);
}*/
 
void pile::pop(){
	p.pop();
}
 
int pile::size(){
	return p.size();
}
 
std::string& pile::top(){
	return p.top();
}
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 <iostream>
#include <stack>
 
#include "pile.hh"
 
int main(){
	pile P;
	std::string s("test");
	std::string& r = s;
	P.push(r);
 
	/*std::stack<std::string> p;
	p.push(std::string("test"));
	std::cout << p.top();*/
 
}
L'erreur de compilation quand je tente de compil mon .cc de test , le pile.cc étant compilé à part :
g++ test.cc -Wall -o test
/tmp/ccqeNGLU.o: In function `main':
test.cc.text+0xcd): undefined reference to `pile::push(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
collect2: ld a retourné 1 code d'état d'exécution
camu@ubuntu:~/c++/projet$ g++ test.cc -Wall -o test
/tmp/ccoQzJtb.o: In function `main':
test.cc.text+0xd3): undefined reference to `pile::push(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
collect2: ld a retourné 1 code d'état d'exécution
Je ne comprend pas exactement le message d'erreur , si quelqu'un de familier avec std::string et les piles pouvait m'aider , ca me serait d'un grand secours