错误:隐式声明的复制构造函数的定义
error: definition of implicitly declared copy constructor
我目前正在处理的Qt C++项目遇到了问题。这是我正在介绍的一个新部分,我发现它有点令人困惑。我创建了一些资产类,这些类由股票、债券和储蓄类继承。这一切都没关系。然后我创建了一个名为 AssetList 的类,它派生了 QList,这个类是我发现问题的地方。
这是我到目前为止的代码。
资产列表.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
资产列表.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::AssetList(const AssetList&) : QList<Asset*>(){}
但是您不会在 AssetList
类中声明它。
您需要添加它:
class AssetList : public QList<Asset*>
{
public:
AssetList(){}
~AssetList();
AssetList(const AssetList&); // Declaring the copy-constructor
...
};
相关文章:
- 对复制 CTOR 和 CTOR 的未定义引用
- 为用户定义的类正确调用复制构造函数/赋值运算符
- 将文件复制到自定义位置,存在字符串转换问题
- 为什么为派生类定义复制构造函数需要定义基类的默认构造函数?
- 为什么定义复制构造函数会给我错误:无法将类型 'obj&' 的非常量左值引用绑定到类型为"obj"的右值?
- 在C++中,我可以在定义自己的复制构造函数后跳过定义赋值运算符吗?
- 访问从联合与另一个成员集复制的联合中的一个成员是否未定义或未指定?
- emplace_back和push_back给出错误'double free or corruption (fasttop)'尽管定义了复制和移动构造函数
- C++11:没有复制构造函数的自定义基于范围的循环
- 创建用户定义的复制构造函数时无法创建对象
- 是std::memcpy在不同的可复制类型之间的未定义行为
- 复制构造函数是始终隐式定义,还是仅在使用时定义?
- 用于 XML 的自定义 wxDataObject 格式,用于复制粘贴支持
- 自定义类对象的C++向量 - 复制构造函数已删除 - std::ifstream
- 复制构造函数C++中自定义类的动态数组
- 自定义类中的移动与复制性能
- 如何在自定义删除器的情况下复制unique_ptr
- 链表复制构造函数 |未定义的行为
- C++使用默认的复制构造函数,即使用户使用模板定义了一个复制构造函数
- 正在使用放置-new,复制存储,然后访问值未定义的行为