Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   C/C++ (http://www.forosdelweb.com/f96/)
-   -   Utilizar metodo de una clase dentro de otra clase ¿como? (http://www.forosdelweb.com/f96/utilizar-metodo-clase-dentro-otra-clase-como-493763/)

fernandodl 29/05/2007 14:46

Utilizar metodo de una clase dentro de otra clase ¿como?
 
Hola,

tengo problemas para llamar a un metodo de una clase dentro de otro metodo de otra clase.

Por un lado tengo una lista enlazada posicional de punteros:

Código:

FICHERO LISTA2.HPP:


class CListaPos2 {

public:
 
  // TipoElemento de la lista Posicional
 
  typedef int TElem; 

  // Métodos de la lista Posicional
  CListaPos2();   
  ~CListaPos2(); 
  bool ListaVacia();
  void InsertarLista(const int pos, const TElem elem);
  void EliminarLista(const int pos);
  int LongitudLista();
  TElem VerElemLista(const int pos);
  void VisualizarLista();
 
private:

  struct TNodo{
      TElem elem;          // información
      TNodo *sig;          // puntero a sig nodo
  };
 
public:

  typedef TNodo *TListaPos2; 
  TListaPos2 l;
};


Por otro lado tengo un clase de un Array de registros con 2 campos:

- un campo cadena de caracteres.
- un campo lista posicional (la lista enlazada pos de punteros anterior).

Código:


FICHERO LISTAINV.HPP:

class CListaInv {

public:
 
  // TipoElemento de la lista Posicional 

  static const int MaxCadena = 60;
  static const int MaxListaInve = 5000;
 
  typedef char TCadena[MaxCadena];
 
  friend void CListaPos2::InsertarLista(const int pos, const TElem elem);

  // Métodos de la lista Posicional
  CListaInv();   
  ~CListaInv();
  void Crear();
  void Insertar(const CListaPos2::TElem elem, const TCadena clave);
  void Ver(const TCadena clave, CListaPos2::TListaPos2 &lista);

 
private:

  struct TNodo{
      TCadena clave;              // información
      CListaPos2::TListaPos2 l2;  // lista pos enlazada
  };
 
  typedef TNodo TListaInv[MaxListaInve]; 
  TListaInv li;
};


El problema viene cuando en el fichero LISTAINV.CPP declaro una funcion como:

Código:

void CListaInv::Insertar(const CListaPos2::TElem elem, const TCadena clave)

{

bla bla bla....


        //li[j].l2.CListaPos2::InsertarLista(1,elem);

        li[j].l2.InsertarLista(1,elem);

*** Necesito llamar al metodo InsertarLista que es de la otra clase....

bla bla bla....

}

*** Necesito llamar al metodo InsertarLista que es de la otra clase.... pero me devuelve error al compilar:

Código:

60 C:\WINDOWS\Escritorio\superfinal\listainv.cpp request for member `InsertarLista' in ` this->CListaInv::li[j].CListaInv::TNodo::l2', which is of non-aggregate type

Alguien podria guiarme sobre como llamar al metodo de la otra clase?


Gracias.


La zona horaria es GMT -6. Ahora son las 08:42.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.