C++ 重载数组索引运算符时,表达式必须具有类类型
代码如下 错误为表达式的行上必须有类类型: 如果索引>=MELENTS.size 但不在线返回融合[指数] 我不明白为什么,这是个小故障吗C++ 重载数组索引运算符时,表达式必须具有类类型,c++,C++,代码如下 错误为表达式的行上必须有类类型: 如果索引>=MELENTS.size 但不在线返回融合[指数] 我不明白为什么,这是个小故障吗 struct Matrix4x4 { float mElements[16]; Matrix4x4() { memset(&this->mElements, 0, sizeof(this->mElements)); this->mElements[0] = 1;
struct Matrix4x4
{
float mElements[16];
Matrix4x4()
{
memset(&this->mElements, 0, sizeof(this->mElements));
this->mElements[0] = 1;
this->mElements[5] = 1;
this->mElements[10] = 1;
this->mElements[15] = 1;
}
Matrix4x4(const float (&mElements)[16])
{
for (int i = 0; i < 16; i++)
this->mElements[i] = mElements[i];
}
float& operator[](int index)
{
if (index >= mElements.size()) {
printf("Array index out of bound, exiting");
return 0.0F;
}
return mElements[index];
}
}
普通数组没有.size。使用include中的std::SizeElements或include中的std::extent\u v。普通数组没有.size。使用include中的std::sizeElements或include中的std::extent\u v。mElements是一个普通的旧数组。它们没有成员函数。因此,编译器不接受mElements.size
随着C++11中std::array的引入,使用普通数组的必要性降低了
替换
float mElements[16];
与
然后,您可以使用mElements.size。mElements是一个普通的旧数组。它们没有成员函数。因此,编译器不接受mElements.size
随着C++11中std::array的引入,使用普通数组的必要性降低了
替换
float mElements[16];
与
那么,你可以使用MySimult.Sig../P>不能在C++中使用MELMENTH.SCASE。普通数组没有任何函数。备选方案:用作您的成员,并进行相应调整。您不能执行sizeofarray/sizeofarray[0]吗?这会让你有足够的时间去尝试once@SyedMohibUddin我认为这不是获得数组长度的最好方法,因为在STL上有一个标准的数组实例化,但是它解决了很多问题。有很多方法,一个是指针HACK和ARR+ 1,ARC不能用C++来做MELMENTHESTENS。普通数组没有任何函数。备选方案:用作您的成员,并进行相应调整。您不能执行sizeofarray/sizeofarray[0]吗?这会让你有足够的时间去尝试once@SyedMohibUddin我认为这不是获得数组长度的最佳方法,因为STL上有一个标准的数组实例化,但它解决了许多情况下的问题。有很多种方法是指针hack*&arr+1-arr