我需要在类体内的方法中引用每个顶点。我已尝试使用this->
,Solid::
等,但这种情况也不顺利。
无论如何,我已经把其他所有东西都重载了,但我无法弄明白,也无法在网络的任何地方搜索。
#define VERTICES_NR 8
class Solid {
protected:
Vector _vertices[VERTICES_NR];
// ... some other code (does not matter) ... //
public:
void Solid::Move()
{
Vector temp; // <- my own standalone type.
cout << "How would you like to move the solid. Type like \"x y z\"" << endl;
cin >> temp;
for(int i = 0; i <= VERTICES_NR; i++)
this->[i] = this->[i] + temp;
}
}
我该如何实施?
答案 0 :(得分:4)
你可以写简单
for(int i = 0; i < VERTICES_NR; i++)
^^^
_vertices[i] += temp;
如果要定义下标运算符,则它看起来像
Vector & operator []( int n )
{
return _vertices[i];
}
const Vector & operator []( int n ) const
{
return _vertices[i];
}
在这种情况下,在类定义中你可以像
一样使用它operator[]( i )
或
this->operator[]( i )
或
( *this )[i]
答案 1 :(得分:4)
直接致电运营商:
operator[](i) += temp;
或通过this
:
(*this)[i] += temp;
答案 2 :(得分:1)
重载的运算符函数可以通过其名称显式调用,如下所示:
operator[](i) = operator[](i) + temp;
答案 3 :(得分:0)
错误:您正在访问类对象而不是成员变量顶点_。
<强>校正强>:
for(int i = 0; i <= VERTICES_NR; i++)
vertices_[i] = vertices_[i] + temp;
可以优化到
vertices_[i] += temp;