Как перегрузить [] и = для использования в одном классе? - PullRequest
0 голосов
/ 04 мая 2020

Я пытался перегрузить операторы = и [] для использования в классе для присвоения индексации значения: Например:

#include <iostream>
using namespace std;

template<class T>
class N
{
public:
    T value;
    void operator=(const T& in){
        value=in;
        cout<<value<<endl;
    }

    T operator[](std::string name){
        cout<<name<<endl;
        return name;
    }
};

int main(){
N<std::string> object;
object["hi"]; //Works
object="never"; //Works
object["last try"]="none again"; //Only works []
return 0;
}

Живой код. Кому после использования это так:

N object;
object["var1"] //returns the var value WORKS
object=50; // WORKS but nosense
object["var2"]=35; //modify var2 to 35 DOESN'T WORK
//Only works the [] overload

Но я не могу понять, как сделать, чтобы оба работали одновременно.

...