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

 
A100:

構文エラーです。(typename)を括弧で囲んだ作業コードの例を挙げてください。括弧内に(OnStart)と書いた方がいいかもしれません。

まあ、シンタックスエラーはないのですが

typename(J)

しかし、すでにこのコードをシンタックスエラーとみなしているのでしょうか?

(typename)J

型変換の原理がここで働くと思われるとき、そしてヘルプは両方のバリエーションを許可します。

 
Roman:

このように、シンタックスエラーはありません。

これはシンタックスエラーに該当するのでしょうか?

型変換の原理がここで働くはずなのに、ヘルプで両方が許容されている場合。

template<typename T>

typenameは型ではなく、キーワードです。この場合、型はTである。変換はキーワードではなく、型に行われる。

哲学的な正当性はここでは適切ではありません。MQLが抽象的な言語であれば、キーワードにキャストすることでランキング1位を獲得できるだろうが......。

 
A100:

typenameは型ではなく、キーワードです。この場合、型はTです。変換はキーワードではなく、型への変換です

哲学的な正当性はここでは適切ではありません。しかし、MQLが抽象言語であれば、キーワードにキャストすることができ、評価も1位に上がると思います。

typenameが 型でないことは理解しています。
しかし、今回は変身を遂げるのです。
定数からその型を求める。
もしかして、構文が正しくない?でも、うまくいく んです。

#define  A '+'

typename(A)
 
Roman:

typenameが 型でないことは理解しています。
でも、この場合は変換ができるんです。
定数から、その型がわかる。
もしかしたら、この構文が正しくない のかも?でも、うまくいく んです。

うまくいくのですが、期待通りにはいきません。型は得られず、文字列が得られます。例で示したかったのですが、以下のようなエラーが出てしまいました。

しかし、それはあなたが正しいということではなく、単にコンパイラのエラーのひとつに過ぎないのです。

 
コンパイルエラーです。
void OnStart()
{
    Print(typename("ushort"));      //(1) нормально
    Print(typename(typename('+'))); //(2) Error: 'typename' - unexpected token
}

(1)と(2)はどう違うのですか?開発者の皆様へ - もしかしたらRomanの 言う通り、typenameはtypeを返すようになったのでしょうか?

結果は予想通り、文字列

 
A100:

効果はあるが、想像とは違う。型は得られず、文字列が得られます。例で示したかったのですが、エラーが出てしまいました。

タイプじゃないってどういうこと?
文字列ではなく、型です。
ushortは文字列ではありません。

#define   A '+'

void OnStart()
{
   Print(typename(A));
   Print(typename("string"));
}
2020.10.09 01:45:54.402 TestScript (MNQZ20,M1)  ushort
2020.10.09 01:45:54.402 TestScript (MNQZ20,M1)  string
 
Roman:

どうしてタイプでないのか?
ただ、文字列ではなく、型を取得する。
Ushortは文字列ではありません。

ushortではなく、"ushort "が出てきます。この違いを理解していますか? もし理解していない場合は、ドキュメントを 読んでから理解してください。

リアルユースホートを手に入れたらカッコイイけど!

 
A100:

ushortではなく、"ushort "が出てきます。この違いを理解していますか? もし理解していない場合は、ドキュメントを読んで理解してください。

つまり、Print()はすでに文字列リテラルで "ushort "として出力して いるのです。
それと何の関係があるのですか?typenameが型名を返すという事実そのものが!?

 
Roman:

つまり、これはすでに "ushort "文字列リテラルとしてPrint()を出力している。
それと何の関係があるんだ?typenameが型名を返すという事実そのものが!?

リンク先にあるドキュメントをお読みになりましたか?そこにも事例があります。残念ながら、私の例は 失敗でした。

 
A100:

リンク先のドキュメントをお読みになりましたか?

テンプレートとの関係は?
使用構文がテンプレート用でない場合、この場合。

理由: