为什么class.cpp中没有识别class.h中的两个函数?

时间:2016-10-23 16:10:18

标签: c++ class

我从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

对西班牙语感到抱歉,我已经翻译了必需品,所以我认为它会清晰可读;)

0 个答案:

没有答案