C ++尝试访问映射中的元素会给我一个不匹配的函数调用错误



我正在尝试编写一个简单的电子表格,但是我在更新方法上遇到了问题。

基本思想是电子表格类在其单元格映射中搜索具有指定名称的单元格,然后使用新数据调用单元格的更新方法。但是,当我尝试编译代码时,调用单元格更新方法的行会导致单元格构造函数出现不匹配的函数调用错误,即使该行根本不调用构造函数。

有问题的地图是一张将字符串作为键和单元格的映射,这是我为这个项目定义的类,作为值。

我尝试编写的特定函数是这样编写的:

std::string spreadsheet::update(std::string cellName, std::string data)
{
//if the cell exists
if(activeCells.count(cellName) > 0)
{
activeCells[cellName].update(data); //removing this line lets the 
//program compile successfully
return data;
}
else
{
//make a new cell
cell newCell(data);
std::pair<std::string, cell> newItem(cellName, newCell);
activeCells.insert(newItem);
return data;
}
}

当我尝试编译它时,我得到的具体错误如下所示:

/

usr/include/c++/4.8.2/bits/stl_map.h:469:59:错误:不匹配 用于调用 'SAPS::cell::cell()' 的函数 __i = insert(__i, value_type(__k, mapped_type()));

(SAPS 是命名空间。

我觉得这很奇怪,因为错误引用了单元格的构造函数,但显然导致问题的行根本不引用单元格的构造函数。

单元格类的构造函数如下所示:

cell:cell(std::string data)
{
update(data);
}

更新方法如下所示:

void cell::update(std::String data)
{
contents.push(data);
}

单元格类中的内容只是一堆字符串。

单元格的 H 文件具有如下设置的函数声明:

cell(std::string data);
~cell();
void update(std::string data);

所有这些都被宣布为公共职能。

虽然我在测试单元类时没有想到所有可能的边缘情况,但我确实确认了所有基本功能都按预期工作。

我可能错过了一些已经在网站上的东西,但我很困惑,我不知道到底在哪里寻找解决方案。

任何和所有协助将不胜感激。

好吧,看起来问题是 Cell 缺少默认构造函数。我忘记了map和许多类似的函数需要这样的构造函数。谢谢你向我指出来。

这里似乎要始终添加一个默认构造函数,即使您不打算使用它。

相关内容

最新更新