gpt4 book ai didi

c++ - std::array 的重载 () 运算符给出:错误 C2039: '()':不是 'std::array<_Ty,_Size>' 的成员

转载 作者:行者123 更新时间:2023-11-30 00:53:01 27 4
gpt4 key购买 nike

我有一段代码是这样的:

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>'

我该怎么办?我一无所知。

最佳答案

类在定义后不能再添加新成员(函数或变量)。

我个人认为,如果它是一个数组,使用 player[id].SomeMethod(some params); 和你的建议一样有效。

关于c++ - std::array 的重载 () 运算符给出:错误 C2039: '()':不是 'std::array<_Ty,_Size>' 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624893/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com