Hola te falto mostrar la implementacion de tus clases, ademas cuesto un poco leer tu codigo te recomendaria ir separando todo en clases y diferentes archivos para no liarte.
Ejemplo me implemente una posible lista enlazada simple de esta forma
#include <iostream>
#include "ListaEmpleado.h"
using namespace std;
int main()
{
ListaEmpleado empleados;
empleados.agregarEmpleado("jose rene",10,'M',"cocinero",1000);
empleados.agregarEmpleado("Martin ocampo",23,'M',"informatico",3000);
empleados.agregarEmpleado("Sarali martinez",32,'F',"abogada",25666);
empleados.agregarEmpleado("Laura nuno",23,'F',"medico",1000);
empleados.agregarEmpleado("Miguel de la madrid",10,'M',"conductor",4566);
empleados.agregarEmpleado("Mariano perez",33,'M',"maestro",12334);
empleados.mostrarEmpleados();
cout<<"Numero de empleados "<<empleados.getTamanoLista()<<endl;
return 0;
}
Clase Empleado
#ifndef EMPLEADO_H
#define EMPLEADO_H
#include<iostream>
class Empleado
{
public:
Empleado(std::string nombre,int edad,char sexo,std::string profesion,float sueldo);
//gettter y setters
std::string getNombre();
int getEdad();
char getSexo();
std::string getProfesion();
float getSueldo();
void setNombre(std::string nombre);
void setEdad(int edad);
void setSexo(char sexo);
void setProfesion(std::string profesion);
void setSueldo(float sueldo);
private:
std::string nombre;
int edad;
char sexo;
std::string profesion;
float sueldo;
};
#endif // EMPLEADO_H
#include "Empleado.h"
using namespace std;
Empleado::Empleado(std::string nombre, int edad, char sexo, std::string profesion, float sueldo)
{
this->nombre=nombre;
this->edad=edad;
this->sexo=sexo;
this->profesion=profesion;
this->sueldo=sueldo;
}
string Empleado::getNombre()
{
return nombre;
}
int Empleado::getEdad()
{
return edad;
}
char Empleado::getSexo()
{
return sexo;
}
string Empleado::getProfesion()
{
return profesion;
}
float Empleado::getSueldo()
{
return sueldo;
}
void Empleado::setNombre(std::string nombre)
{
this->nombre=nombre;
}
void Empleado::setEdad(int edad)
{
this->edad=edad;
}
void Empleado::setSexo(char sexo)
{
this->sexo=sexo;
}
void Empleado::setProfesion(std::string profesion)
{
this->profesion=profesion;
}
void Empleado::setSueldo(float sueldo)
{
this->sueldo=sueldo;
}
Clase Nodo
#ifndef NODO_H
#define NODO_H
#include "Empleado.h"
#include<string>
class Nodo
{
public:
Nodo(std::string nombre,int edad,char sexo,std::string profesion,float sueldo);
Empleado empleado;
Nodo* siguiente;
};
#endif // NODO_H
#include "Nodo.h"
using namespace std;
Nodo::Nodo(std::string nombre, int edad, char sexo, std::string profesion, float sueldo)
:empleado(nombre,edad,sexo,profesion,sueldo)
{
}
Clase ListaEmpleado
#ifndef LISTAEMPLEADO_H
#define LISTAEMPLEADO_H
#include "Nodo.h"
#include<string>
class ListaEmpleado
{
public:
ListaEmpleado();
void agregarEmpleado(std::string nombre,int edad,char sexo,std::string profesion,float sueldo);
Empleado getEmpleado(int indice);
int getTamanoLista();
void mostrarEmpleados();
~ListaEmpleado();
private:
Nodo* apuntador;
int tamano;
};
#endif // LISTAEMPLEADO_H
#include "ListaEmpleado.h"
#include "Empleado.h"
using namespace std;
ListaEmpleado::ListaEmpleado()
{
this->apuntador=NULL;
this->tamano=0;
}
void ListaEmpleado::agregarEmpleado(std::string nombre, int edad, char sexo, std::string profesion, float sueldo)
{
Nodo* registroNuevo=new Nodo(nombre,edad,sexo,profesion,sueldo);
if(registroNuevo!=NULL){
registroNuevo->siguiente=NULL;
if(apuntador==NULL){
apuntador=registroNuevo;
tamano++;
}
else{
Nodo* apuntadorAuxiliar=apuntador;
while(apuntadorAuxiliar->siguiente!=NULL){
apuntadorAuxiliar=apuntadorAuxiliar->siguiente;
}
apuntadorAuxiliar->siguiente=registroNuevo;
tamano++;
}
}
}
void ListaEmpleado::mostrarEmpleados()
{
Nodo* apuntadorAuxiliar=apuntador;
while(apuntadorAuxiliar!=NULL){
Empleado actual=apuntadorAuxiliar->empleado;
cout<<"Nombre "<<actual.getNombre()<<endl;
cout<<"Sexo "<<actual.getSexo()<<endl;
cout<<"Profesion "<<actual.getProfesion()<<endl;
cout<<"Sueldo "<<actual.getSueldo()<<endl;
apuntadorAuxiliar=apuntadorAuxiliar->siguiente;
cout<<endl;
}
}
Empleado ListaEmpleado::getEmpleado(int indice)
{
Empleado empleado(" ",0,' '," ",0.0);
int contador=0;
Nodo* apuntadorAuxiliar=apuntador;
while(apuntadorAuxiliar->siguiente!=NULL){
if(contador==indice){
return apuntadorAuxiliar->empleado;
}
}
return empleado;
}
int ListaEmpleado::getTamanoLista()
{
return this->tamano;
}
ListaEmpleado::~ListaEmpleado()
{
while(apuntador!=NULL){
Nodo* actual=apuntador;
apuntador=apuntador->siguiente;
delete actual;
}
}
Espero con este codigo te puedas guiar si tienes dudas comentalo.
Saludos....