Hier ist ein kleines Rätsel aus meiner C++/CLI Schulung, die ich letzte Woche gehalten habe:
Der Code wurde mit “/clr” kompiliert (das ist wichtig).
Kann mir jemand sagen, wie der genaue Callstack innerhalb der Methode “Foo” aussieht?
Und: Wie kann man indirekt nachweisen, was genau passiert?
Meine Schulungsteilnehmer dürfen natürlich nicht mitmachen, die wissen es ja schon 😉
struct V
{
V() {}
V(const V &v)
{
this->i = v.i;
}
int i;
};
class C
{
public:
void CallFoo()
{
V v;
Foo(v);
}
virtual void Foo(V v)
{
// TODO: Wie sieht der Callstack aus?
}
};
int main()
{
C c;
c.CallFoo();
}
Lösungen können als Kommentare gepostet werden.
Ein kleiner Hinweis noch: VS208 zeigt nicht den exakten Callstack an, aber er zeigt, dass da irgendwas noch passiert sein muss 😉