我从C ++开始,也许这不是提交问题的最佳方式,请告诉我是否如此。
我在GraphImp.h上遇到两个函数的问题,我已经在GraphImp.cpp上实现了它们并且使用了Visual Studio中建议的公司但它还没有认识到它,当我尝试创建一个新图表,它会告诉我它是一个抽象类。
GraphImp.h
#ifndef GRAPHIMP_H
#define GRAPHIMP_H
#include "Iterable.h"
#include "FuncionHash.h"
#include "FuncionCosto.h"
#include "Tupla.h"
#include "Array.h"
#include "Lista.h"
#include "ListaOrdEnc.h"
#include "Grafo.h"
#include "ColaPrioridad.h"
#include "FuncionCosto.h"
#include "Tabla.h"
#include "TablaAbierto.h"
typedef unsigned int nat;
template <class V, class A>
class GrafoImp : public Grafo<V, A>{
public:
Matriz<bool> AdyacentMatrix() const;
void LoadEdges(Puntero<ColaPrioridad <Tupla<V, V, A>, int>> cola, const FuncionCosto<V, A>& costo) const;
private:
...
};
#include "GraphImp.cpp"
#endif
GraphImp.cpp:
#ifndef GRAFOIMP_CPP
#define GRAFOIMP_CPP
#include "GrafoImp.h"
template<class V, class A>
Matriz<bool> GrafoImp<V, A>::AdyacentMatrix() const
{
Matriz<bool> output = Matriz<bool>(vertices.ObtenerLargo());
foreach(Tupla<V, V, A> arista, aristas->ObtenerIterador()) {
int i = this->ObtenerIndice(arista.ObtenerElemento1());
int j = this->ObtenerIndice(arista.ObtenerElemento2());
output[i][j] = true;
}
return output;
}
template<class V, class A>
void GrafoImp<V, A>::LoadEdges(Puntero<ColaPrioridad<Tupla<V, V, A>, int>> cola, const FuncionCosto<V, A>& costo) const{
...
}
Graph.h
#ifndef GRAPH_H
#define GRAPH_H
#include "Iterable.h"
#include "FuncionHash.h"
#include "FuncionCosto.h"
#include "Tupla.h"
#include "Array.h"
#include "Lista.h"
#include "ListaOrdEnc.h"
#include "Matriz.h"
#include "ColaPrioridad.h"
enum TipoConexo
{
NO_CONEXO, DEBILMENTE_CONEXO, FUERTEMENTE_CONEXO
};
typedef unsigned int nat;
template <class V, class A>
class Graph abstract
{
public:
...
virtual Matriz<bool> AdyacentMatrix() const abstract;
virtual void LoadEdges(Puntero<ColaPrioridad <Tupla<V, V, A>, int>> cola, const FuncionCosto<V, A>& costo) const abstract;
};
#endif
对西班牙语感到抱歉,我已经翻译了必需品,所以我认为它会清晰可读;)