エラー、バグ、質問 - ページ 2156

 
A100:

それは場所による - あなたは質問に答えるために完全な例が必要です。

文脈に合うところならどこでも。その正当性はともかく、このエントリー自体がいささか不条理な気がするのです。

 
fxsaber:

文脈に合うところならどこでも。このエントリーは、その正当性とは裏腹に、私にはいささか不条理に感じられる。

前//エントリーは正常です...その後、それは不条理です。

 
A100:

前//エントリーは正常です...以後、不条理

メソッドへのポインタに関数フィールドを割り当てることに、何の不都合も感じません。

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:

メソッドへのポインタを関数フィールドに割り当てることは、何も不合理なことではありません。

不合理なのは、コンパイラが単純なメソッドへのポインタをサポートしていないこと、仮にサポートしていたとしても、単純なメソッドへのポインタと普通の関数へのポインタは、他のすべての条件が同じであれば、異なるシグネチャを持つということである

 
A100:

関数ポインタと単純なメソッドポインタは異なるシグネチャを持っています。

静的メソッドと関数のシグネチャの違いは何ですか?

 
fxsaber:

スタティックメソッドと関数のシグネチャの違いは何ですか?

静的メソッドは、シグネチャが一致すれば、関数と変わりません。

 
A100:

静的メソッドは、従来の関数とシグネチャに違いはない

それがどうして悪いことなのでしょうか?

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()
}
私が言いたいのは、そういう趣味は曖昧さを生むということです。就職面接の言語理解度テストの1つとして以外は、どれが役に立つのでしょうか。
 
fxsaber:

それのどこが悪いんだ?

私が言いたいのは、そういう趣味は曖昧さを生むということです。就職面接の言語理解度テストの1つとしてしか使えない。
悪い点は、C++では結果が異なることです
 
A100:
悪い点は、C++では結果が異なることです

だから正当化もされない。

 
fxsaber:

何ですか?


Save Version」を選択すると、現在のパラメータが内蔵MTリストに保存され、「Load Version」メニューから利用できるようになります。リストはEAごとに異なります。