C++ 为什么可以´;t I重载C++;运算符[]具有两个参数?
我知道这是可行的:C++ 为什么可以´;t I重载C++;运算符[]具有两个参数?,c++,operator-overloading,C++,Operator Overloading,我知道这是可行的: struct vtx { long operator[](long line) { return line; } }; 但是为什么我不能做类似的事情来模拟两列访问呢?有什么办法吗 struct vtx { long operator[](long line, long column) { return line + column; //resolved later } }; 运算符[]定义
struct vtx
{
long operator[](long line)
{
return line;
}
};
但是为什么我不能做类似的事情来模拟两列访问呢?有什么办法吗
struct vtx
{
long operator[](long line, long column)
{
return line + column; //resolved later
}
};
运算符[]
定义为仅接受1个参数。不能接受2个参数,但可以接受一个元组:
struct vtx
{
long operator[](std::tuple<long, long> loc)
{
return std::get<0>(loc) + std::get<1>(loc);
}
};
// used as foo[std::make_tuple(0, 1)]
struct vtx
{
长运算符[](标准::元组位置)
{
返回std::get(loc)+std::get(loc);
}
};
//用作foo[std::make_tuple(0,1)]
查看答案,只需使用长运算符()(大小行、大小列)你可能会使用foo[{0,1}]
。但是你最好首先使用operator()
,它实际上可以接受多个参数,比如foo(1,2)
@MaxLanghof哇,我不知道元组的花括号有效。谢谢