C ++ Netbeans项目中出现奇怪的“未定义引用”错误

时间:2015-08-30 23:30:06

标签: c++ netbeans

重复问题的解决方案不起作用

我有以下文件:

ListaEnc.hpp

#include "Elemento.hpp"

template<typename T>
class ListaEnc {

public:
    ListaEnc();
    ~ListaEnc();
//  inicio
    void adicionaNoInicio(const T& dado);
    T retiraDoInicio();
    void eliminaDoInicio();
        T pegarHead();
//  posicao
    void adicionaNaPosicao(const T& dado, int pos);
    int posicao(const T& dado) const;
    T* posicaoMem(const T& dado) const;
    bool contem(const T& dado);
    T retiraDaPosicao(int pos);
//  fim
    void adiciona(const T& dado);
    T retira();
//  especifico
    T retiraEspecifico(const T& dado);
    void adicionaEmOrdem(const T& data);
//  outras
    bool listaVazia() const;
    bool igual(T dado1, T dado2);
    bool maior(T dado1, T dado2);
    bool menor(T dado1, T dado2);
    void destroiLista();
        int pegarTamanhoLista();

private: //trocar pra private
    Elemento<T>* head;
    int size;
};

ListaEnc.cpp

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

template<typename T>
ListaEnc<T>::ListaEnc()
{
     ...
}

的main.cpp

#include "ListaEnc.hpp"
using namespace std;
int main(int argc, char** argv)
{
    double x1, y1;

    x1 = 2; y1 = 4.2;

    ListaEnc<int>* teste = new ListaEnc<int>();

    return 0;
}

这应该编译得很好,但我得到一个未定义的引用错误到main.cpp上的ListaEnc。我有更多的文件,其中ListaEnc的引用也是未定义的,但我尝试隔离它仍然无法让它工作。有谁知道为什么会这样?

编辑:更具体地说,ListaEnc的构造函数和析构函数存在未定义的错误

1 个答案:

答案 0 :(得分:0)

实例化模板类时,不能将声明与实现分开。将代码合并到一个文件中,并将其包含在main.cpp中。

或者,如果适合您的编码风格,甚至更进一步在类声明中实现内联函数。

相关问题