问题是返回值,问题是 string& operator[] (const string index)和 bool& operator[] (const string index),它不允许我从 string 中获取值(返回 1)但是当我交换字符串时( bool& 到 string& 以及它们的内容)然后一切都反过来并返回空虚,如何解决?我的代码:
#include <iostream>
#include <string>
#include <map>
using namespace std;
class StringData
{
private:
map<string, string> dataStrings;
map<string, bool> dataBools;
public:
string& operator[] (const string index)
{
return dataStrings[index];
}
bool& operator[] (const string index)
{
return dataBools[index];
}
};
int main()
{
StringData a;
a["test"] = false;
a["test2"] = "Hello";
cout << a["test"];
cout << a["test2"];
system("Pause");
}
@Harry 的选项非常奇怪,我会严重拒绝为此审查代码。让我们接受@HolyBlackCat 的报价并安排
诚然,它仅适用于 C++17 及更早版本,但您始终可以绕过这个问题。
这个想法本身是无效的 - 一个重载给出了两个具有相同签名的函数:
不允许这样的 C++。
推荐解决方案: