🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #241

Aufrufer einer Methode feststellen?

#241
From: Armin M. Warda
Date: Thu, 10 Aug 1995 10:02
53 lines
1935 bytes
  Hallo,

gibt es eine Moeglichkeit, den Aufrufer einer Methode
in der Methode festzustellen?

Ich koennte natuerlich beim Aufruf einer Methode immer
den 'this'-Zeiger explizit uebergeben:

  class X
  {
    public:
      void f(int x, Y* caller=NULL)
      {
        if (caller)
          if (caller == ...)
            ...
            caller->...;
            ...
          else
            ...
        else
          ...
      };
  };

Aufruf aus einer Methode eines anderen Objekts:

  f(42, this);

Aufruf aus main() oder einer anderen Funktion, die
keine Methode eines Objekts ist:

  f(42);

Muss ich tatsaechlich den 'this'-Zeiger des Aufrufers
explizit uebergeben? Gibt es sowas wie einen impliziten 
'caller'-Zeiger (analog zum 'this'-Zeiger) bzw. eine 
einfache Moeglichkeit, sowas zu implementieren?

Die benoetigte Information muesste ja eigentlich auf dem 
Stack vorhanden sein, ein Debugger (beispielsweise GDB)
hat ja auch keine Probleme, die Stack-Frames hoch- ('UP')
und runterzulaufen ('DOWN'), um dann auf die jeweiligen 
'this'-Zeiger zuzugreifen.

Ich verwende GCC 2.5.8 - 2.6.3 unter SunOS 4.x - 5.x 
und Linux 1.2.x - 1.3.x.

A.
-- 
-------------------------------------------------------------------------------
Armin M.Warda   <http://ls4-www.informatik.uni-dortmund.de/QM/MA/warda/pi.html>
Universitaet Dortmund,  Fachbereich Informatik, Lehrstuhl IV,  D-44221 Dortmund
Technical Details
Message-ID: <40clg8$oej@fbi-news.informatik.uni-dortmund.de>
Path: arc1-ca.pugleaf.net!Informatik.Uni-Dortmund.DE!veronica!warda

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!Informatik.Uni-Dortmund.DE!veronica!warda
From: warda@veronica.informatik.uni-dortmund.de (Armin M. Warda)
Newsgroups: de.comp.lang.c++
Subject: Aufrufer einer Methode feststellen?
Date: 10 Aug 1995 10:02:48 GMT
Organization: CS Department, Dortmund University, Germany
Sender: warda@informatik.uni-dortmund.de (Armin M. Warda)
Message-ID: <40clg8$oej@fbi-news.informatik.uni-dortmund.de>
NNTP-Posting-Host: veronica.informatik.uni-dortmund.de
Keywords: caller, this