Le problema que tenía antes (el programa no se compilaba) ya lo arregle pero ahora tengo el problema que los metodos no guardan los valores que se le introducen.
      
Código C++:
Ver original#include <iostream>
#include "Lista.h"
 
using namespace std;
 
Lista :: Lista (void){
 
    p=0;
    numnodos=0;
    
}
 
Lista :: Lista (int nnodos){
 
    numnodos=nnodos;    
 
    for (int i=0; i<nnodos; i++){
        l nuevo = new Nodo;
        nuevo->valor = 0;
        nuevo->siguiente = p;
        p=nuevo;
    }
    
}
 
Lista :: Lista (int nnodos, TipoBase val){
    
    numnodos=nnodos;    
 
    for (int i=0; i<nnodos; i++){
        l nuevo = new Nodo;
        nuevo->valor = val;
        nuevo->siguiente = p;
        p=nuevo;
    }
}
 
Lista :: ~Lista (void){
 
    delete p;
    
}
 
int Lista :: NNodos(void){
 
    return(numnodos);
 
}
 
bool Lista  :: EstaVacia(){
    if (p==0)
        return (true);
 
    else
        return false;
}
 
Lista Lista :: EscribirLista (void){
 
    l nuevo;
    TipoBase val;
    int n = NNodos();
 
    for (int i=0; i<n; i++){
    cout << "Introduce un valor: ";
    cin >> val;
    nuevo->valor=val;
    nuevo->siguiente=p; 
    p=nuevo;
    }
}
 
void Lista :: Insertar (TipoBase val, int pos){
 
    l nuevo;
    int n = NNodos();
    
    for (int i=0; i<n; i++){    
        if (n==pos)
            nuevo->valor=val;
        nuevo->siguiente=p;
        p=nuevo;        
    }
}
            
TipoBase Lista :: ObtenerValor (int pos){
 
    l nuevo;
    int n = NNodos();
 
    for (int i=0; i<n; i++){
        if (n==pos)
            cout << nuevo->valor << endl;
        nuevo->siguiente=p;
        p=nuevo;
    }