[STL] Classe avec une Pile , problème de méthode
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:
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:
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:
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 :
Citation:
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 :)