-1
どのように私はこのようなメンバ関数にどのように私はテンプレートクラスを渡すことができます「この」ポインタ
template <typename T>
class A
{
....
process(A<T>* a) {};
someOtherFunction() {process(this)};
....
}
どのように私はこのようなメンバ関数にどのように私はテンプレートクラスを渡すことができます「この」ポインタ
template <typename T>
class A
{
....
process(A<T>* a) {};
someOtherFunction() {process(this)};
....
}
すなわちそのクラスのメンバ関数へのテンプレートクラスのthisポインタを渡すことができます。
template <typename T>
class A
{
static void process(A* a) {}
void someOtherFunction() {process(this)};
}
あなたはT
を指定する必要はありません、それが明示的this
を渡されるので、process
はstatic
することができます。しかし、暗黙のうちに暗黙的に行われるようにすることができます:
template <typename T>
class A
{
void process() { A* a = this; }
void someOtherFunction() {process()};
}
私は正直なところあなたの質問が分かりません。たとえば、テンプレートなしでそれをどうやってやるのかを説明できますか? –
'this'は常に非静的メンバー関数に暗黙的に渡されます。 –
同じオブジェクトのメンバー関数を呼び出すだけで自動的に "this"が渡されるので、あなたが何をしたいのかは分かりません。 'A'クラスの*別の*オブジェクトで' process'を呼び出すことを意味しますか?別の 'T 'を持つ別のオブジェクト?関数をどのように使いたいかを示すために、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。 –