什么是非静态成员函数?

Sir*_*lot 6 c++ methods member non-static

我被告知我不能在类函数中使用'this'关键字.我来自c#,我已经习惯了这个工作,但是编译器告诉我它只能在非静态成员函数中使用.

D3DXVECTOR3 position;

void Position(D3DXVECTOR3 position)
{
    this.position = position;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*k B 16

在C++中,您需要Position使用类名来限定函数:

void YourClassNameHere::Position(D3DXVECTOR3 position)

同样来自@ Pubby8的答案this是一个指针,而不是一个引用,所以你需要使用this->position(或者考虑使用不影响类成员的参数名称 - 我喜欢_在我的类成员上使用尾随).

此外,默认情况下,C++不会通过引用传递,因此如果D3DXVECTOR3是复杂类型,您将复制大量数据.考虑将其作为传递const D3DXVECTOR3& position.


Pub*_*bby 14

这是一个包含对象地址的指针.

D3DXVECTOR3 position;

void YourClassNameHere::Position(D3DXVECTOR3 position)
{
    this->position = position;
}
Run Code Online (Sandbox Code Playgroud)

应该管用.

D3DXVECTOR3 position;

void YourClassNameHere::Position(D3DXVECTOR3 position)
{
    (*this).position = position;
}
Run Code Online (Sandbox Code Playgroud)

还应该工作.