基本上,我正在尝试为c++创建模板map / dictionary类(我知道这已经完成了,假设我是受虐狂的)。
我开始编写以下骨架:
#pragma once
template <class T>
class AssArray
{
int _size;
int _position;
public:
AssArray(int size);
~AssArray(void);
const T& operator [](char* b) const;
T& operator [](char* b) const;
//I read this should be done sth like this when researching, though an explanation would be nice.
};
现在,我需要能够(T = AssArray [“llama”]),设置(AssArray [“llama”] = T)和覆盖(AssArray [“llama”] = newT)。
这样做很简单,只需将其循环等等,这里真正的问题是操作员;
如果我使用AssArray [“llama”] = T,应该如何将T的值添加到运算符重载函数中?
我仅找到简要描述解决方案的解释,因此无法真正理解。
请赐教。
最佳答案
您需要做的就是像这样纠正您的签名:
const T& operator [](char* b) const;
T& operator [](char* b);
我已经从第二个运算符中删除了
const
限定符。你不知道您只需返回对新值应存储在何处的引用,编译器将负责其余的工作。如果数组中不存在
"llama"
,则需要为其创建一个条目,并返回对该条目的引用。关于c++ - 在C++中重载模板类的[]运算符get和set,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14840885/