41 lines
979 B
C++
41 lines
979 B
C++
// tempparm.cpp – templates as parameters
|
||
#include <iostream>
|
||
#include "stacktp.h"
|
||
|
||
template <template <typename T> class Thing>
|
||
class Crab
|
||
{
|
||
private:
|
||
Thing<int> s1;
|
||
Thing<double> s2;
|
||
public:
|
||
Crab() {};
|
||
// assumes the thing class has push() and pop() members
|
||
bool push(int a, double x) { return s1.push(a) && s2.push(x); }
|
||
bool pop(int & a, double & x){ return s1.pop(a) && s2.pop(x); }
|
||
};
|
||
|
||
int main()
|
||
{
|
||
using std::cout;
|
||
using std::cin;
|
||
using std::endl;
|
||
Crab<Stack> nebula;
|
||
// Stack must match template <typename T> class thing
|
||
int ni;
|
||
double nb;
|
||
cout << "Enter int double pairs, such as 4 3.5 (0 0 to end):\n";
|
||
while (cin>> ni >> nb && ni > 0 && nb > 0)
|
||
{
|
||
if (!nebula.push(ni, nb))
|
||
break;
|
||
}
|
||
|
||
while (nebula.pop(ni, nb))
|
||
cout << ni << ", " << nb << endl;
|
||
cout << "Done.\n";
|
||
// cin.get();
|
||
// cin.get();
|
||
return 0;
|
||
}
|