我是 C++ 的新手,开始使用引用,这让我得到了以下代码:
#include <iostream>
#include <unordered_map>
class Wrapper {
private:
std::unordered_map<std::string, int> map;
public:
void add(std::string &key, int value) { map[key] = value; }
int get(std::string &key) { return map[key]; }
};
class Writer {
private:
Wrapper wrapper;
public:
explicit Writer(const Wrapper &wrapper) : wrapper(wrapper)
{
std::cout << "Writer: " << &wrapper << std::endl;
}
void write(std::string key, int value) { wrapper.add(key, value); }
};
class Reader {
private:
Wrapper wrapper;
public:
explicit Reader(const Wrapper &wrapper) : wrapper(wrapper)
{
std::cout << "Reader: " << &wrapper << std::endl;
}
int read(std::string key) { return wrapper.get(key); }
};
我的主要功能:
int main()
{
Wrapper wrapper;
Writer writer(wrapper);
Reader reader(wrapper);
writer.write("key", 123);
std::cout << "Value: " << reader.read("key") << std::endl;
}
当我创建 Writer
和 Reader
实例时,我传递了对 Wrapper
类相同实例的引用。我希望 writer
添加的值也应该对 reader
可用,因为它们使用相同的 wrapper
实例。但是,read("key")
调用返回 0,因为 key 未知。
我哪里做错了,我怎样才能达到预期的效果?
最佳答案
成员变量也必须在读写器中声明为引用
class Writer {
private:
Wrapper & wrapper;
}
class Reader {
private:
Wrapper & wrapper;
}
https://stackoverflow.com/questions/73279043/
相关文章:
caching - Aerospike 为特定字段设置到期日期
reactjs - 使用 React Router 将可选查询参数添加到动态路径
python - 如何按列导出数据框以分隔 csv 文件?以及如何将不同数据框中的列附加到分离的 c
delphi - 组件是特定类 - 在 BPL 结构中不起作用
python - 如果数字在 Pandas 的指定范围内,如何返回值
google-cloud-platform - 我无法让 google cloud function
javascript - ECMA脚本 : What does `status` mean in S