我被告知我不能在类函数中使用'this'关键字。我来自c#,我已经习惯了这个工作,但是编译器告诉我它只能在非静态成员函数中使用。
D3DXVECTOR3 position;
void Position(D3DXVECTOR3 position)
{
this.position = position;
}
答案 0 :(得分:15)
在C ++中,您需要使用类名限定Position
函数:
void YourClassNameHere::Position(D3DXVECTOR3 position)
同样来自@ Pubby8的回答this
是一个指针,而不是一个引用,所以你需要使用this->position
代替(或考虑使用不影响类成员的参数名称 - 我喜欢使用尾随{我的班级成员{1}}。
此外,默认情况下,C ++不会通过引用传递,因此如果_
是一个复杂的类型,您将复制大量数据。请考虑将其作为D3DXVECTOR3
传递。
答案 1 :(得分:14)
这是一个包含对象地址的指针。
D3DXVECTOR3 position;
void YourClassNameHere::Position(D3DXVECTOR3 position)
{
this->position = position;
}
应该工作。
D3DXVECTOR3 position;
void YourClassNameHere::Position(D3DXVECTOR3 position)
{
(*this).position = position;
}
也应该有效。
答案 2 :(得分:4)
Position
不仅是一个自由函数(与类没有关联),而且this
也是一个指针,而不是一个引用。
D3DXVECTOR3 position;
void ClassName::Position(D3DXVECTOR3 position)
{
this->position = position;
}
或者,如果那应该是构造函数,
ClassName::ClassName(D3DXVECTOR3 p) : position(p)
{
}