Overloading an STL function

shamgar03

Senior member
Jul 13, 2004
289
0
0
I am trying to alter the pop function of the STL queue so that whenever I pop off the front element it calls delete on the element. I am having trouble though getting my overloading code to compile. I attached my test code. Input would be appreciated
 

shamgar03

Senior member
Jul 13, 2004
289
0
0
Not sure whats up with the attach code thing:
#include <queue>
#include <list>

#include <cstdio>

using namespace std;

void queue<int, list<int> >:: Pop() {
printf("here\n");
c.pop_front();
}

int main()
{
int out;
queue<int, list<int> > myqueue;
myqueue.push(5);
myqueue.push(6);
myqueue.push(7);
out = myqueue.front();
printf("%i\n", out);
myqueue.pop();
printf("%i\n", out);

out = myqueue.front();
printf("%i\n", out);
myqueue.pop();
printf("%i\n", out);

out = myqueue.front();
printf("%i\n", out);
myqueue.pop();
printf("%i\n", out);
}

The error I get is:
test_queue.cpp:8: error: too few template-parameter-lists
 

shamgar03

Senior member
Jul 13, 2004
289
0
0
Ohhh finally got it, you have to have the template <> before the function, and it also has to be put in namespace std, otherwise the compiler will again complain.
#include <queue>
#include <list>

#include <cstdio>

using namespace std;

namespace std {
template<>
void queue<int, list<int> >:: Pop() {
printf("here\n");
c.pop_front();
}
}

int main()
{
int out;
queue<int, list<int> > myqueue;
myqueue.push(5);
myqueue.push(6);
myqueue.push(7);
out = myqueue.front();
printf("%i\n", out);
myqueue.pop();
printf("%i\n", out);

out = myqueue.front();
printf("%i\n", out);
myqueue.pop();
printf("%i\n", out);

out = myqueue.front();
printf("%i\n", out);
myqueue.pop();
printf("%i\n", out);
}
 

Venix

Golden Member
Aug 22, 2002
1,084
3
81
If you want the queue to manage its own memory, you should just use boost:: ptr_deque or a similar container to back the queue.

Abusing template specialization to change the behavior of a standard library class is just a really bad idea.
 

Templeton

Senior member
Oct 9, 1999
467
0
0
Originally posted by: Venix
If you want the queue to manage its own memory, you should just use boost:: ptr_deque or a similar container to back the queue.

Abusing template specialization to change the behavior of a standard library class is just a really bad idea.

Especially considering that it's illegal to add anything to the std namespace. Either use a boost ptr_container, or roll your own by layering on top of a standard container.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |