PLOです。アプリケーションの問題 - ページ 18

 
TheXpert:
コンパイルできないようです。
効きますよ :/ 試してみてください。もちろん、設計を模式的に説明しましたが、私の似たようなものは問題なくコンパイルできます。
 
Yedelkin:

検索がうまくいきません。 繰り返しになるかもしれませんが、「クラスオブジェクトは自己破壊できるのか」という質問です。つまり、まず予約語のthisを使ってクラスオブジェクトの自分への参照を取得し、対応するオブジェクト記述子(ポインタ)に対してdelete演算 子を適用するのです。

みたいな感じ。

それとも、オブジェクトの削除は「内部で」ではなく「外部で」行うのが良い/好ましいのでしょうか?

また、この質問には疑問がありました。私は次のような結論に達しました:オブジェクトは自分自身を(苦もなく)削除できますが、オブジェクトのデータ(変数)はその後存在しないので、それらへの呼び出しはないことを忘れてはいけません。しかし、これは汚いやり方だ。外から見たほうがいい。また、オブジェクトが自身を削除した場合、new でしか作成できない。
 
220Volt:
この問題については私も疑問に思っていました。結論から言うと、オブジェクトは自分自身を(苦もなく)削除できるが、その後、オブジェクトのデータ(変数)は存在しなくなるので、それらへの呼び出しができないことを忘れてはならない。しかし、イマイチこれでは雑なやり方で、外の方がいい。
はい、1年前から使っています :)そのモノが不要になったとき、とても便利です。 なぜ、「汚い」方法と考えるのか理解できないのですが?
 
Yedelkin:

まずは、あなたが使おうとしている言語のドキュメントを読んで、そのプログラミング言語の目的のために使われている定義を見ることから始めてみてはいかがでしょうか?

謹んで申し上げます。

正しい方向で考えていますね。

 

このコードはコンパイルできません

class CCC
{
   public:
      datetime start;                      //Сохраняем время создания объекта класса ССС
      CCC(void) : start(TimeCurrent()) {};  //Функция TimeCurrent() указана без символа "точка с запятой"
     ~CCC(void)                      {}; 
}
  
void OnTick()
{
   CCC ccc;
}

これは、7行目の;が抜けていて、6行目と5行目には必要ないからです。

 
kazakov.v:

正しい方向で考えていますね。

言語のドキュメントをあまり読んでいないのではと思われます :)
 
TheXpert:

このコードはコンパイルできません

これは、7行目の;が抜けていて、6行目と5行目には必要ないからです。

つまり、クラスオブジェクトを作成 するときにトラブルが発生するのでは?OK、ありがとうございます、今確認します。
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
Документация по MQL5: Основы языка / Операторы / Оператор создания объекта new
  • www.mql5.com
Основы языка / Операторы / Оператор создания объекта new - Документация по MQL5
 
TheXpert:
コンパイルできないようです。
コンパイルされます(まあ、セミコロンにはうるさくないですが ;-))。
 
marketeer:
コンパイルできます(まあ、セミコロンにはうるさくないですが ;-))。

だから質問者は、まさに彼らに問題があるのです。

一般的には、そんな些細なことですが...。

 
TheXpert:

このコードはコンパイルできません

これは、7行目の;が抜けているためで、6行目と5行目には必要ありません。

不思議なことに、私のコードでは、OnTick()の行を追加した後でも、すべてがコンパイルされます。CCCクラスの宣言の後にのみ、セミコロンを置く必要があります。あなたが書いたように、-7行目にセミコロンを入れる必要があります。