gpt4 book ai didi

c++ - 链接来自另一个文件的函数时,Qt 上的错误 LNK 2019

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:38:36 25 4
gpt4 key购买 nike

<分区>

我在 Windows x86 机器上使用 Qt 4.7.2 版(我使用的是旧版本,因为我们的老师将使用这个版本来审查项目)在一个大学项目中工作,但是我在链接一些函数时遇到了一些问题类 Container 到类 QListModelAdapter。

我已经尝试再次运行 qmake,清理并重建项目并删除构建文件夹以从头开始构建它,但没有任何效果,还检查了我的 .pro 文件,但似乎没有任何问题。

qlistmodeladapter.h

#ifndef QLISTMODELADAPTER_H
#define QLISTMODELADAPTER_H

#include <QAbstractListModel>
#include "container.h"

class AddLayout;

class QListModelAdapter : public QAbstractListModel {
private:
Container<articolo>* model;
const AddLayout* insert;
public:
QListModelAdapter(QObject* = nullptr, const AddLayout* = nullptr);
~QListModelAdapter() override;
bool insertRows(int, int = 1, const QModelIndex& = QModelIndex()) override;
bool removeRows(int, int = 1, const QModelIndex& = QModelIndex()) override;
};
#endif

qlistmodeladapter.cpp

#include "qlistmodeladapter.h"
#include "container.h"
#include "addlayout.h"
#include <QFont>

QListModelAdapter::QListModelAdapter(QObject* parent, const AddLayout* ins) :
QAbstractListModel(parent),
model(new Container<articolo>()), insert(ins) {}

bool QListModelAdapter::removeRows(int begin, int count, const QModelIndex& parent) {
beginRemoveRows(parent, begin, begin + count - 1);
model->removeEl(begin);
endRemoveRows();
return true;
}

bool QListModelAdapter::insertRows(int begin, int count, const QModelIndex& parent) {
beginInsertRows(parent, begin, begin + count - 1);
articolo art = articolo(new Computer(insert->getNome()));
model->insertEl(art);
endInsertRows();
return true;
}

容器.cpp

#include "container.h"
template<class T>
void Container<T>::insertEl(T& p)
{
if (maxSize == size)
{
increaseSize();
}
iteratore it = end();
*(it) = p;
size++;
}
template<class T>
void Container<T>::removeEl(int j)
{
if (j <= size)
{
iteratore it = begin();
for(int i = 0; i <= (j-1); i++)
{
it++;
}
delete it.punt;
iteratore aux = it;
it++;
for(int i = j; i < size-2; i++)
{
aux = it;
aux++;
it++;
}
size--;
}
}

容器.h

#ifndef CONTAINER_H
#define CONTAINER_H
#include "items.h"

template<class T>
class Container
{
friend class iteratore;
private:
T* vector;
int size;
int maxSize;
public:
class iteratore {
// is defined correctly
};
Container(T* p = nullptr, int s = 0);//it is defined but not included
void removeEl(int);
void insertEl(T&);
};
#endif // CONTAINER_H

有罪的函数是 removeEl 并且是在哪里得到这个错误:

qlistmodeladapter.obj:-1: error: LNK2019: riferimento al simbolo esterno "public: void __cdecl Container<class articolo>::removeEl(int)" (?removeEl@?$Container@Varticolo@@@@QEAAXH@Z) non risolto nella funzione "public: virtual bool __cdecl QListModelAdapter::removeRows(int,int,class QModelIndex const &)" (?removeRows@QListModelAdapter@@UEAA_NHHAEBVQModelIndex@@@Z)

抱歉,语言设置为意大利语,奇怪的是它可以与 insertEl 一起正常工作,所以我不知道该怎么想。

我已经检查了 .pro 文件,所以我现在不包括它,因为已经有很多代码。

非常感谢您的帮助,非常感谢。

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