gpt4 book ai didi

c++ - C++ 和 Netbeans 的 undefined reference 问题

转载 作者:行者123 更新时间:2023-11-28 06:06:24 25 4
gpt4 key购买 nike

我有以下文件:

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: undefined reference to `ListaEnc::~ListaEnc()'

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

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

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

最佳答案

自从您发布的代码显示

#ifndef POLIGONO_HPP
#define POLIGONO_HPP

Poligono.cpp 中,但您在 ListaEnc.hpp 中没有相同的内容,我假设您在该 header 中缺少包含守卫?

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

那么,也许要确保 ListaEnc.hpp 中包含守卫?

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com