Fehler, Irrtümer, Fragen - Seite 2156

 
A100:

Es kommt darauf an, wo - Sie brauchen ein vollständiges Beispiel, um die Frage zu beantworten

Überall dort, wo es in den Kontext passt. Ich finde den Eintrag selbst etwas absurd, auch wenn er richtig ist.

 
fxsaber:

Überall dort, wo es in den Kontext passt. Der Eintrag selbst erscheint mir trotz seiner Gültigkeit etwas absurd.

Vor // ist der Eintrag normal... Danach ist es absurd.

 
A100:

Vor // ist der Eintrag normal... nach ist absurd

Ich sehe nichts Absurdes daran, ein Funktionsfeld einem Zeiger auf eine Methode zuzuweisen

typedef void (*fn)();

void g() { Print(__FUNCSIG__); }

struct A
{
  fn f;
  
  A() : f(g) {}
};

struct B : A
{
  void f() { Print(__FUNCSIG__); }
  
  void A100()   { this.f = this.f; } // не присвоить полю-функции указатель на одноименный метод, а на другой метод - пожалуйста:
  void A100_2() { this.f = this.h; } // 'h' - pointer to this function type is not supported yet
  
  void h() { Print(__FUNCSIG__); }
};

void OnStart()
{
  B b;
  
  b.f(); // void g()
  
  b.A100();
  
  b.f(); // void g()
}
 
fxsaber:

Ich sehe nichts Absurdes daran, einem Funktionsfeld einen Zeiger auf eine Methode zuzuweisen

Das Absurde ist, dass der Compiler keine Zeiger auf einfache Methoden unterstützt, und selbst wenn er es täte, hätten ein Zeiger auf eine einfache Methode und ein Zeiger auf eine einfache Funktion eine unterschiedliche Signatur, wenn alle anderen Dinge gleich wären

 
A100:

ein Funktionszeiger und ein einfacher Methodenzeiger haben eine unterschiedliche Signatur

Wie unterscheidet sich eine statische Methode von einer Funktion in Bezug auf die Signatur?

 
fxsaber:

Wie unterscheidet sich eine statische Methode von einer Funktion in Bezug auf die Signatur?

statische Methoden sind nicht anders als Funktionen, wenn die Signatur übereinstimmt

 
A100:

Statische Methoden unterscheiden sich in ihrer Signatur nicht von herkömmlichen Funktionen

Was ist daran schlecht?

typedef void (*fn)();

void g() { Print(__FUNCSIG__); }

struct A
{
  static fn f;
};
static fn A::f = g;

struct B : A
{
  static void f() { Print(__FUNCSIG__); }
  
  void A100() { this.f = this.f; } // по смыслу ничем не отличается от A::f = B::f
};

void OnStart()
{
  B b;
  
  b.f(); // void g()
  
  b.A100();
  
  b.f(); // void g()
}
Ich will damit sagen, dass solche Hobbys zu Zweideutigkeiten führen. Sie sind nützlich, außer als einer der Tests für das Sprachverständnis bei Vorstellungsgesprächen.
 
fxsaber:

Was ist denn daran falsch?

Ich will damit sagen, dass solche Hobbys zu Zweideutigkeiten führen. Er ist nur als einer der Tests für das Sprachverständnis bei Vorstellungsgesprächen nützlich.
Das Schlimme daran ist, dass das Ergebnis in C++ anders ausfallen wird
 
A100:
Das Schlimme daran ist, dass das Ergebnis in C++ anders ausfallen wird

Es ist also auch nicht gerechtfertigt.

 
fxsaber:

Was ist das?


Nach Auswahl von "Version speichern" werden die aktuellen Parameter in der integrierten MT-Liste gespeichert, die über das Menü "Version laden" verwendet werden kann. Die Liste ist für jeden EA unterschiedlich.