Erreurs, bugs, questions - page 2156

 
fxsaber:

N'importe quel endroit qui s'inscrit dans le contexte. L'entrée elle-même me semble quelque peu absurde, malgré sa validité.

Avant // l'entrée est normale... après, c'est absurde.

 
A100:

Avant // l'entrée est normale... après est absurde

Je ne vois rien d'absurde à vouloir affecter un champ de fonction à un pointeur vers une méthode

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:

Je ne vois rien d'absurde à vouloir affecter un pointeur à une méthode à un champ de fonction.

Ce qui est absurde, c'est que le compilateur ne prend pas en charge les pointeurs vers des méthodes simples, et même s'il le faisait, un pointeur vers une méthode simple et un pointeur vers une fonction simple auront une signature différente, toutes choses égales par ailleurs...

 
A100:

un pointeur de fonction et un pointeur de méthode simple ont une signature différente

en quoi une méthode statique est-elle différente d'une fonction en termes de signature ?

 
fxsaber:

En quoi une méthode statique est-elle différente d'une fonction en termes de signature ?

lesméthodes statiques ne sont pas différentes des fonctions quand la signature correspond

 
A100:

lesméthodes statiques n'ont pas une signature différente de celle des fonctions conventionnelles

En quoi est-ce une mauvaise chose, alors ?

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()
}
Ce que je veux dire, c'est que de tels passe-temps conduisent à des ambiguïtés. Qui ne sont utiles que comme l'un des tests linguistiques lors des entretiens d'embauche.
 
fxsaber:

Qu'est-ce qu'il y a de mal à ça, alors ?

Ce que je veux dire, c'est que de tels passe-temps conduisent à des ambiguïtés. Ce qui n'est utile que comme l'un des tests de compréhension de la langue dans les entretiens d'embauche.
Le problème est qu'en C++, le résultat sera différent.
 
A100:
Le problème est qu'en C++, le résultat sera différent.

Donc ce n'est pas justifié non plus.

 
fxsaber:

Qu'est-ce que c'est ?


Après avoir sélectionné "Save Version", les paramètres actuels sont enregistrés dans la liste MT intégrée, qui peut être utilisée à partir du menu "Load Version". La liste est différente pour chaque EA.

 
Andrey Khatimlianskii:

Après avoir sélectionné "Save Version", les paramètres actuels sont enregistrés dans la liste MT intégrée, qui peut être utilisée à partir du menu "Load Version". La liste est différente pour chaque EA.

La liste est-elle temporaire ?

Raison: