クラス関数で「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;
}
また、動作するはずです。
Position
C++ では、関数をクラス名で修飾する必要があります。
void YourClassNameHere::Position(D3DXVECTOR3 position)
また、@ Pubby8の回答this
は参照ではなくポインターであるため、代わりに使用する必要がありますthis->position
(または、クラスメンバーをシャドウしないパラメーター名の使用を検討してください-クラスメンバーの末尾を使用するのが好き_
です)。
また、C++ はデフォルトで参照渡しを行わないためD3DXVECTOR3
、複雑な型の場合、大量のデータをコピーすることになります。const D3DXVECTOR3& position
代わりに as を渡すことを検討してください。
Position
フリー関数 (クラスに関連付けられていない) は、記述したとおりであるだけthis
でなく、参照ではなくポインターでもあります。
D3DXVECTOR3 position;
void ClassName::Position(D3DXVECTOR3 position)
{
this->position = position;
}
または、それがコンストラクターであると想定されている場合は、
ClassName::ClassName(D3DXVECTOR3 p) : position(p)
{
}