Ir ao conteúdo
  • Cadastre-se

Retorno de função usando Ponteiro LISTA ENCADEADA C++


Ir à solução Resolvido por atlos,

Posts recomendados

Olá, boa tarde. Estou com um projeto de faculdade para fazer uma ORDENAÇÃO TOPOLOGICA utilizando LISTA ENCADEADA e estou com o seguinte problema. Eu criei um método que retorna um ponteiro da seguinte forma:

TopSort::LeaderPointer SearchInsert(int x){     TopSort t;     LeaderPointer p = head;     sentinel->key = x;          while(p->key != x)        p = p -> nextLeader;     if (p == sentinel) {        sentinel = new leaderNode;        p -> countPred = 0;        p -> nextLeader = sentinel;        p -> nextTrailer = NULL;           }      return p;}

LeaderPointer é um ponteiro que aponta para uma struct privada:

Class TopSort{  private:....  struct leaderNode    {    int key; // campo que recebe a "chave" daquela estrutura    int countPred; // campo que guarda a quantidade de predecessores que essa struct têm    leaderNode *nextLeader; //apontador que aponta para o próximo preambulo    trailerNode *nextTrailer; // //apontador que aponta para o próximo postâmbulo    };            typedef leaderNode *LeaderPointer;

O compilador esta reclamando dizendo que o LeaderPointer é privado e que eu preciso usar dentro deste contexto. Alguém tem ideia de como resolver?

 

P.s: O professor que pediu para usar da seguinte forma "TopSort::LeaderPointer SearchInsert(int x)" . Antes estava da maneira habitual "LeaderPointer TopSort:: SearchInsert(int x)" e não reconhecia LeaderPointer como um tipo de retorno. E o método SearchInsert está funcionando perfeitamente, só o retorno que não esta dando certo.

 

Obrigada!

Link para o comentário
Compartilhar em outros sites

Se "TopSort::LeaderPointer SearchInsert(int x)" for uma função ordinaria,ela tem que ser friend da classe

 

Se SearchInsert for uma função dentro da classe TopSort,talvez o compilador ainda nao esteja vendo a declaração da struct dentro da classe,declara struct no topo da classe só pra ter certeza que o resto da classe vai conseguir "vê-la" 

Link para o comentário
Compartilhar em outros sites

Se "TopSort::LeaderPointer SearchInsert(int x)" for uma função ordinaria,ela tem que ser friend da classe

 

Se SearchInsert for uma função dentro da classe TopSort,talvez o compilador ainda nao esteja vendo a declaração da struct dentro da classe,declara struct no topo da classe só pra ter certeza que o resto da classe vai conseguir "vê-la" 

""

Então, o que você quer dizer com Se " "TopSort::LeaderPointer SearchInsert(int x)" for uma função ordinaria,ela tem que ser friend da classe"?

 

Eu declarei ela dentro da classe TopSort como um metodo privado. Mesmo mudando de lugar o compilar continua reclamando. você tem ideia do que significa utilizar a variavel dentro do contexto privado?

Link para o comentário
Compartilhar em outros sites

  • Solução

que é uma função comum(que nao faz parte da classe)tentando acessar um membro privado da classe

contexto privado é só um termo qualquer,ele pode ta pedindo pra voce usar isso somente dentro da classe ou qualquer outra coisa que faça sentido na cabeça dele,é melhor perguntar pra ele

mas realmente é estranho nao ta funcionando..se voce declarou a função abaixo da declaração da struct dentro da classe então nao tem porque nao funcionar(isso ja era pra evitar qualquer bug de compilador),se puder mostrar o código inteiro ajudaria..

class TopSort{ private: struct leaderNode{}; typedef leaderNode *LeaderPointer;LeaderPointer SearchInsert(int x);};//Definição TopSort::LeaderPointer TopSort::SearchInsert(int x){//Faz o que tiver que fazer}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!