基本上,我正在尝试为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/

10-11 17:06