2016-04-26 13 views
-1

どのように私はこのようなメンバ関数にどのように私はテンプレートクラスを渡すことができます「この」ポインタ

template <typename T> 
class A 
{ 
.... 
process(A<T>* a) {}; 
someOtherFunction() {process(this)}; 
.... 
} 
+3

私は正直なところあなたの質問が分かりません。たとえば、テンプレートなしでそれをどうやってやるのかを説明できますか? –

+3

'this'は常に非静的メンバー関数に暗黙的に渡されます。 –

+0

同じオブジェクトのメンバー関数を呼び出すだけで自動的に "this"が渡されるので、あなたが何をしたいのかは分かりません。 'A'クラスの*別の*オブジェクトで' process'を呼び出すことを意味しますか?別の 'T 'を持つ別のオブジェクト?関数をどのように使いたいかを示すために、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を作成してみてください。 –

答えて

1

すなわちそのクラスのメンバ関数へのテンプレートクラスのthisポインタを渡すことができます。

template <typename T> 
class A 
{ 
    static void process(A* a) {} 
    void someOtherFunction() {process(this)}; 
} 

あなたはTを指定する必要はありません、それが明示的thisを渡されるので、processstaticすることができます。しかし、暗黙のうちに暗黙的に行われるようにすることができます:

template <typename T> 
class A 
{ 
    void process() { A* a = this; } 
    void someOtherFunction() {process()}; 
} 
関連する問題