Netbeans 项目C++出现奇怪的"Undefined reference"错误

Strange "Undefined reference" error on C++ Netbeans project

本文关键字:Undefined reference 错误 项目 C++ Netbeans      更新时间:2023-10-16

重复问题的解决方法无效

我有以下文件:

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的引用也是未定义的,但我试图隔离它,仍然不能让它工作。有人知道为什么会这样吗?

edit:更具体地说,ListaEnc

的构造函数和析构函数有一个未定义的错误

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

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