【发布时间】:2013-07-12 22:20:20
【问题描述】:
我有一段代码如下所示:
std::array<CPlayer,MAX_PLAYERS> Player;
#define Player(playerid) Player[playerid]
然后按如下方式使用它:
Player(id).SomeMethod(some params);
但是定义很丑陋,我想尽可能地保留它的 C++ 方式,并且 std::array 确实有 [] 运算符但没有 () 运算符,所以我尝试添加这个:
template < class T, size_t N > T& std::array<T, N>::operator()(int index)
{
return this->at(index);
}
但它给了我以下错误:
error C2039: '()' : is not a member of 'std::array<_Ty,_Size>'
对此我能做些什么?我一无所知。
【问题讨论】:
-
为什么不能直接使用
operator []? -
如果你想让它尽可能像 C++,使用正确的索引操作符!
-
#define Player(playerid) Player[playerid]这样做的唯一目的是将(更改为[吗?有点浪费时间写...
标签: c++ arrays c++11 operator-overloading