У меня возникли проблемы с проектом Qt C++, над которым я сейчас работаю. Это новый раздел, который я покрываю, и я нахожу его немного запутанным. Я создал несколько классов Asset, которые наследуются классами Stock, Bond и Savings. Все было в порядке. Затем я создал класс под названием AssetList, который получил QList, этот класс, где я нашел проблему.ошибка: определение неявно объявленного экземпляра копии
Вот код, который у меня есть.
AssetList.h
#ifndef ASSET_LIST_H
#define ASSET_LIST_H
#include "Asset.h"
#include <QString>
class AssetList : public QList<Asset*>
{
public:
AssetList(){}
~AssetList();
bool addAsset(Asset*);
Asset* findAsset(QString);
double totalValue(QString);
};
#endif
AssetList.cpp
#include "AssetList.h"
AssetList::AssetList(const AssetList&) : QList<Asset*>(){}
AssetList::~AssetList()
{
qDeleteAll(*this);
clear();
}
bool AssetList::addAsset(Asset* a)
{
QString desc = a->getDescription();
Asset* duplicate = findAsset(desc);
if(duplicate == 0)
{
append(a);
return true;
}
else
{
delete duplicate;
return false;
}
}
Asset* AssetList::findAsset(QString desc)
{
for(int i = 0 ; i < size() ; i++)
{
if(at(i)->getDescription() == desc)
{
return at(i);
}
}
return 0;
}
double AssetList::totalValue(QString type)
{
double sum = 0;
for(int i = 0 ; i < size() ; i++)
{
if(at(i)->getType() == type)
{
sum += at(i)->value();
}
}
return sum;
}
Ошибка я получаю на данный момент ошибка компиляции: error: definition of implicitly declared copy constructor
Я не совсем уверен, что это значит, я «Мы гуляли и смотрели в учебнике и не нашли многого. Может ли кто-нибудь помочь мне или поставить меня в правильном направлении, чтобы понять это?
Заранее благодарен!
Если я просто удалить объявление из файла AssetList.h, я получаю точно такую же ошибку:/Или я недоразумение, что вы говорите. – nickcorin
@nickcorin: вам нужно * добавить * объявление в определение класса: 'AssetList (const AssetList &);' –
@nickcorin В файле заголовка, который вы показываете использовать, нет объявления конструктора-копии. Вам нужно добавить его в класс. –