gpt4 book ai didi

c++ - 试图引用已删除的函数。

转载 作者:行者123 更新时间:2023-11-30 05:21:11 26 4
gpt4 key购买 nike

我的代码有问题。我收到错误消息“AssociativeArray>::Node::Node(void)':试图引用已删除的函数”

这是我的课

template<typename K, typename V>
class AssociativeArray
{
public:
AssociativeArray(int = 2); // default constructor of a capacity of 2
AssociativeArray(){ delete [] data; }
AssociativeArray(const AssociativeArray<K,V>&);
AssociativeArray<K,V>& operator=(const AssociativeArray<K,V>&);
V& operator[](const K&); // getter
V operator[](const K&) const; // setter
queue<K> keys() const;
int size() const {return siz;};
bool containsKey(const K&) const;
void deleteKey(const K&);
void clear();

private:
int cap;
int siz;
int values;
void capacity(int);
struct Node{K key; V value; bool inUse;};
Node* data; // data = new Node[cap]
void ExpandNode(int,int);
};

这是给我问题的构造函数。

template<typename K, typename V>
AssociativeArray<K, V>::AssociativeArray(int cap)
{
this->cap = cap;
this->siz = 0;

data = new Node[cap]; // ERRORS HERE

for (int index = 0; index < cap; index++)
{
data[index].inUse = false;
}
}

这是main中的声明。

AssociativeArray<string, AssociativeArray<string, bool>> seen(10);

最佳答案

当您创建 Node 的原始数组时,Node 类的默认构造函数用于每个项目。

出于某种原因,没有这样的默认构造函数。 Key 成员可能缺少默认构造函数。但是,您没有显示代码,所以这只是推测。

在不调用项目类型的默认构造函数的情况下创建数组的一种好方法是使用 std::vector。或者,如果这样做有意义,那么您可以只定义一个默认构造函数。但是使用 std::vector 还会处理许多其他问题,因此我建议您无论如何都这样做。

关于c++ - 试图引用已删除的函数。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40312018/

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