我有以下文件:

ListaEnc.hpp

#include "Elemento.hpp"
#include <cstdlib>
#include <iostream>

template<typename T>
class ListaEnc {

public:
    ListaEnc();
    ~ListaEnc();
...
}

//Implementation:
template<typename T>
ListaEnc<T>::ListaEnc()
{
    head = NULL;
    size = 0;
}

template <class T>
ListaEnc<T>::~ListaEnc() {

}


main.cpp:

#include "ListaEnc.hpp"
using namespace std;

int main(int argc, char** argv)
{
    ListaEnc<int>* teste = new ListaEnc<int>();

    return 0;
}


Poligono.hpp

#ifndef POLIGONO_HPP
#define POLIGONO_HPP

#include "Ponto.hpp"
#include "ListaEnc.hpp"
#include <string>

using namespace std;
public:
    //Construtores
    Poligono(ListaEnc<Ponto> pontos, string nome);
    Poligono(const Poligono& orig);
    virtual ~Poligono();

    //Metodos
    string obterNome();
    void adicionarPonto(Ponto);
    ListaEnc<Ponto> obterPontos();
private:
    ListaEnc<Ponto> pontos;
    string nome;
};

#endif  /* POLIGONO_HPP */


Poligono.cpp

#include "Poligono.hpp"



* Poligono::Poligono(ListaEnc<Ponto> pontos, string nome)
{
    this->pontos = pontos;
    this->nome = nome;
}

* Poligono::Poligono(const Poligono& orig) {
}

* Poligono::~Poligono() {
}

//Metodo
string Poligono::obterNome()
{
    return this->nome;
}

ListaEnc<Ponto> Poligono::obterPontos()
{
    return this->pontos;
}

void Poligono::adicionarPonto(Ponto p)
{
    this->pontos.adiciona(p);
}


我在Poligono.cpp上收到以下编译错误:


  /home/mariana/NetBeansProjects/TrabalhoCG/Poligono.cpp:12:对`ListaEnc ::〜ListaEnc()'的未定义引用


ListaEnc的析构函数为空,但已实现。有谁知道如何解决这个问题?

编辑:添加了ListaEnc的构造函数和析构函数的实现。该错误出现在我为Poligono.cpp添加的代码中,其中ListaEnc是参数之一。

Edit2:我向Poligono.cpp中出现错误的点添加了一个星号(第一个构造函数,第二个构造函数和析构函数)

最佳答案

由于您发布的代码显示

#ifndef POLIGONO_HPP
#define POLIGONO_HPP


Poligono.cpp中,但是您在ListaEnc.hpp中没有相同的字符,我假设您在该标头中缺少包含保护?

根据Poligono.cpp中包含的其他代码,这可能导致两次定义模板ListaEnc。在C ++标准下,如果您违反一个定义规则,则可能只会收到链接错误,而不会收到其他诊断消息。

因此,也许要确保ListaEnc.hpp中包含防护措施?

如果您发布更多代码,我将更新此答案:)

编辑:另一个建议,如果找不到ListaEnc的dtor定义时,您可以尝试将其实现移到类主体中?这使得错字不太可能导致它丢失。由于所有代码都在标头中,因此实际上不会改变任何其他内容。

关于c++ - C++和Netbeans的未定义引用问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32302730/

10-15 00:21