C ++ Erlauben Sie nur eine Mitgliedsfunktion mit spezifischem Namen, um private Mitgliedsfunktion aufzurufen

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: C ++ Erlauben Sie nur eine Mitgliedsfunktion mit spezifischem Namen, um private Mitgliedsfunktion aufzurufen

by Anonymous » 21 Mar 2025, 10:08

Ich habe die folgende Klassenhierarchie: < /p>

Code: Select all

class BaseClass
{
void DoSomething(){}

/*
template
friend void T::CanDoSomething();
*/
};

class SomeClassDerivedFromBaseClass : public BaseClass
{
void CanDoSomething() { DoSomething(); }
};
Ich weiß, dass eine solche Freundschaftserklärung von der Sprache nicht zulässig ist, aber kann ich dieses Verhalten erreichen, in dem dosenting () nur aus einer Mitgliedsfunktion mit dem Namen candosomething () zugänglich ist () Aus abgeleiteter Klasse? /> Die Signatur von dosomething () kann in irgendeiner Weise mit Standardparametern, jedoch nicht mit nicht standardmäßigen, in irgendeiner Weise verändert werden.

Code: Select all

void DoSomething(const char* caller = std::source_location::current().function_name()
und static_assert . Dies soll deutlich machen, dass jede Art von Kompilierungsfehler, wenn dosomething () aus jeder Funktion aufgerufen wird, die keinen Namen hat, CandoSomething () ist akzeptabel

Top