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

Programme in C++. Entwicklerforum
Anonymous
 C ++ Erlauben Sie nur eine Mitgliedsfunktion mit spezifischem Namen, um private Mitgliedsfunktion aufzurufen

Post by Anonymous »

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post