有人告诉我,我不能在类函数中使用“this”关键字。我来自 c#,我已经习惯了这种工作方式,但编译器告诉我它只能在非静态成员函数中使用。
D3DXVECTOR3 position;
void Position(D3DXVECTOR3 position)
{
this.position = position;
}
有人告诉我,我不能在类函数中使用“this”关键字。我来自 c#,我已经习惯了这种工作方式,但编译器告诉我它只能在非静态成员函数中使用。
D3DXVECTOR3 position;
void Position(D3DXVECTOR3 position)
{
this.position = position;
}
这是一个包含对象地址的指针。
D3DXVECTOR3 position;
void YourClassNameHere::Position(D3DXVECTOR3 position)
{
this->position = position;
}
应该管用。
D3DXVECTOR3 position;
void YourClassNameHere::Position(D3DXVECTOR3 position)
{
(*this).position = position;
}
也应该工作。
在 C++ 中,您需要Position
使用类名限定您的函数:
void YourClassNameHere::Position(D3DXVECTOR3 position)
同样来自@Pubby8 的答案this
是指针,而不是引用,因此您需要this->position
改用(或考虑使用不影响类成员的参数名称 - 我喜欢_
在我的类成员上使用尾随)。
此外,默认情况下 C++ 不会通过引用传递,因此如果D3DXVECTOR3
是复杂类型,您将复制大量数据。考虑const D3DXVECTOR3& position
改为传递它。
您编写它的方式不仅是Position
自由函数(不与类关联),而且this
还是指针,而不是引用。
D3DXVECTOR3 position;
void ClassName::Position(D3DXVECTOR3 position)
{
this->position = position;
}
或者,如果那应该是一个构造函数,
ClassName::ClassName(D3DXVECTOR3 p) : position(p)
{
}