Todavia no llegue a lo que es POO jiji
Esto era lo que tenia que hacer, gracias por corregir mi error no era una implementacion, era una definicion de una estructura de datos

#include <iostream>
#include <stdlib.h>
using namespace std;
const int MAX=10;
typedef int contenedor[MAX];
typedef struct tpila{
contenedor datos1;
contenedor datos2;
};
void binario(int n);
void init_stack(tpila &pila);
void push_stack(tpila &pila, int nuevo);
bool full_stack(tpila pila);
bool empty_stack(tpila pila);
int pop_stack(tpila &pila);
int top_stack(tpila pila);
int main()
{
binario(12);
cout<<"FIN DEL PROGRAMA"<<endl;
system("pause");
}
void binario(int n)
{
tpila pila;
init_stack(pila);
while(n!=0){
push_stack(pila,n%2);
n/=2;
}
cout<<"Binario: ";
while(empty_stack(pila)==false){
cout<<pop_stack(pila);
}
cout<<endl;
}
void init_stack(tpila &pila)
{
pila.datos2[0]=-1;
}
void push_stack(tpila &pila, int nuevo)
{
if(full_stack(pila)==true){
cout<<"PILAS LLENAS"<<endl;
}
else{
if(pila.datos2[0]<MAX-1){
pila.datos2[0]++;
pila.datos1[pila.datos2[0]]=nuevo;
}
else{
pila.datos2[0]++;
if(pila.datos2[0]=MAX){
pila.datos2[0]++;
}
pila.datos2[pila.datos2[0]-MAX]=nuevo;
}
}
}
bool full_stack(tpila pila)
{
return pila.datos2[0]==MAX*2-1;
}
bool empty_stack(tpila pila)
{
return pila.datos2[0]==-1;
}
int pop_stack(tpila &pila)
{
int aux;
if(empty_stack(pila)==true){
aux=-1;
}
else{
if(pila.datos2[0]>MAX){
aux=pila.datos2[pila.datos2[0]-MAX];
pila.datos2[0]--;
}
else{
if(pila.datos2[0]==MAX){
pila.datos2[0]--;
}
aux=pila.datos1[pila.datos2[0]];
pila.datos2[0]--;
}
}
return aux;
}
int top_stack(tpila pila)
{
int aux;
if(empty_stack(pila)==true){
aux=-1;
}
else{
if(pila.datos2[0]>MAX){
aux=pila.datos2[pila.datos2[0]-MAX];
}
else{
if(pila.datos2[0]==MAX){
pila.datos2[0]--;
}
aux=pila.datos1[pila.datos2[0]];
}
}
return aux;
}