Ir ao conteúdo
  • Cadastre-se
pedsq

Problam com typedef, typename e template

Recommended Posts

Pessoal,

estou querendo fazer uma classe grafo template, mas nao consigo fazer algumas das definicoes para trabalhar com a classe. Segue o código:

CODE:

#ifndef GRAPH_H

#define GRAPH_H

#include <list> //std::list

#include <utility> //std::pair

#include "node.h"

#include "edge.h"

template < typename NoTy, typename EdTy, typename KeyTy = int >

class Graph

{

public:

Graph ( void ):EdgeNum(0),NodeNum(0){ };

Graph ( const Graph& gr );

~Graph ( void );

//algumas definicoes básicas

typedef typename Node<NoTy,KeyTy> _noTy;

typedef typename Edge<EdTy> _edTy;

typedef typename std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_TyNo_It,typename Graph<NoTy,EdTy,KeyTy>::_edTy*>> _TyEd;

typedef typename std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_TyNo_It,typename Graph<NoTy,EdTy,KeyTy>::_edTy*>>::iterator _TyEd_It;

typedef typename std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_noTy*,std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_TyNo_It,typename Graph<NoTy,EdTy,KeyTy>::_edTy*>>>> _TyNo;

typedef typename std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_noTy*,std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_TyNo_It,typename Graph<NoTy,EdTy,KeyTy>::_edTy*>>>>::iterator _TyNo_It;

//outras funcoes publicas....

private:

_TyNo cont; //container que armazena o grafo

int EdgeNum; //número de vértices

int NodeNum; //número de nós

};

onde node.h e edge.h estão declaradas as classes também template dos nós e das arestas do grafo.

No VisualC++2008 estou tendo o o seginte erro:

Error 1 fatal error C1001: An internal error has occurred in the compiler.

Realmente é um pouco estranho definir um tipo com a própria definicao do mesmo, como em:

typedef typename std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_noTy*,std::list<std::pair<typename Graph<NoTy,EdTy,KeyTy>::_TyNo_It,typename Graph<NoTy,EdTy,KeyTy>::_edTy*>>>>::iterator _TyNo_It;

Mas, se esse for realmente o erro, existe uma outra maneira de eu fazer a classe grafo template da maneira que eu estou pensado?

Desde já Grato....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×