2016-04-26 11 views
-1

passieren Wie kann ich eine Templat-Klasse ‚this‘ Zeiger auf eine Memberfunktion der Klasse also passierenWie kann ich eine Templat-Klasse ‚dieses‘ Zeiger auf Elementfunktion

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

Ich verstehe ehrlich gesagt nicht, was Ihre Frage ist. Könnten Sie vielleicht erläutern, wie Sie es ohne Vorlagen machen würden? –

+3

'this' wurde immer implizit an nicht statische Memberfunktionen übergeben. –

+0

Es ist nicht wirklich klar, was Sie tun möchten, da das Aufrufen einer Elementfunktion des gleichen Objekts automatisch "dieses" übergibt. Meinst du, du willst 'process' in * einem anderen * Objekt der' A' Klasse nennen? Ein anderes Objekt mit einem anderen 'T'? Können Sie bitte versuchen, ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zu erstellen, das zeigt, wie Sie die Funktion verwenden möchten? –

Antwort

1

Like this:

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

Sie müssen T nicht angeben, und process kann static sein, da es explizit this übergeben wird. Aber Sie können es auch implizit passieren lassen:

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