エラー、バグ、質問 - ページ 1119 1...111211131114111511161117111811191120112111221123112411251126...3185 新しいコメント A100 2014.04.08 23:58 #11181 コンパイルエラー: コンパイラは私が参照でポインタを渡していると考えています。class A { }; void f1( A* a ) {} void f2( int a ) {} void OnStart() { A* const a1 = new A(); f1( a1 ); // ошибка компиляции: constant variable cannot be as reference const int a2 = 1; f2( a2 ); //все нормально } f1( A* const a ) と書くとすべてうまくコンパイルされますが、f2( const int a ) と書くとコンパイラは正しく処理します。 по сути f1( A* a ) отличается от f1( A* const a ) тем же, чем f2( int a ) отличается от f2( const int a ) であれば、f2( a2 )でもエラーが発生するはずです。 Alexander 2014.04.09 07:08 #11182 Lone_Irbis:ここにコードと.setを全部載せるのは気が引けますが、どこかに送ることはできます。 ありがとうございました。再現してみましょう。コードはservicedeskに送ることができます(すべてのチェックの後、それが削除されることが保証されます)。 A100 2014.04.09 12:13 #11183 const A* ポインタを削除できないclass A { }; void OnStart() { const A *a = new A; delete( a ); //ошибка компиляции: constant cannot be modified }一見、論理的に見えますが、delete はデストラクタ ~A() を呼び出すので、const にはできません (***)しかし、その場合、次の例のようにオブジェクトを削除することは原理的に不可能です。void f() { const A a; }なぜなら,f()の終了時にconstにできないデストラクタが呼ばれたままなので,(***)ドクトリンが効かないからです。さらに、C++コンパイラは、引数がconst A * と宣言されていてもdelete( a ) を妨げません(デストラクタは const と宣言できない、なぜなら非 const オブジェクトを含むあらゆるオブジェクトに対して呼び出されるからです)。 削除済み 2014.04.09 14:05 #11184 の投稿がカウントされなくなりました( Sergey Golubev 2014.04.09 14:23 #11185 GriFFon4ik: の投稿がカウントされなくなりました( そう、もはや・・・。 Vladimir Karputov 2014.04.09 14:30 #11186 GriFFon4ik: の投稿がカウントされなくなりました( 何でもいいんです。 削除済み 2014.04.09 14:40 #11187 barabashkakvn: まあ、いいや。 悲しい:-) Sergey Golubev 2014.04.09 14:59 #11188 ポストを確認したら、増えていなかった。何か巧妙な改良方式があるのかもしれない...。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム 面白くてユーモラス ニューデジタル, 2014.04.09 14:23 考えることを禁止すべき - 不愉快だ! 行を編んで詩にしています。 海は乾いた大地をなめる。 子供はおまるでウンチをする。 ♪大人たちは魂にウンチをする♪ レーティングはどうなったんだろう。 削除済み 2014.04.09 17:37 #11189 newdigital:ここで自分の投稿を確認したのですが、増えていませんね。何か巧妙な改良方式があるのかもしれない...。レーティングはどうなったんだろう。 動いている)が、ない( 削除済み 2014.04.09 19:17 #11190 フォーラムの投稿のレーティングをカウントしないようにした(エラー , ウェブサイト mql5.com , 閉鎖された , イニシアチブ: 2014.04.09 14:07 , # 993171フォーラムの投稿のレーティングをカウントしないようにした(応援団2014.04.09 15:27なぜ、そう思ったのですか?GriFFon4ik2014.04.09 17:38以前は、コメント、評価、すぐに+1でしたが、今は "すぐに+1 "はありません。応援団2014.04.09 17:38現在、レーティングは定期的に割り当てられ、遅延が発生します 1...111211131114111511161117111811191120112111221123112411251126...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
コンパイルエラー: コンパイラは私が参照でポインタを渡していると考えています。
f1( A* const a ) と書くとすべてうまくコンパイルされますが、f2( const int a ) と書くとコンパイラは正しく処理します。
であれば、f2( a2 )でもエラーが発生するはずです。ここにコードと.setを全部載せるのは気が引けますが、どこかに送ることはできます。
const A* ポインタを削除できない
一見、論理的に見えますが、delete はデストラクタ ~A() を呼び出すので、const にはできません (***)
しかし、その場合、次の例のようにオブジェクトを削除することは原理的に不可能です。
void f() { const A a; }なぜなら,f()の終了時にconstにできないデストラクタが呼ばれたままなので,(***)ドクトリンが効かないからです。
さらに、C++コンパイラは、引数がconst A * と宣言されていてもdelete( a ) を妨げません(デストラクタは const と宣言できない、なぜなら非 const オブジェクトを含むあらゆるオブジェクトに対して呼び出されるからです)。
の投稿がカウントされなくなりました(
の投稿がカウントされなくなりました(
まあ、いいや。
ポストを確認したら、増えていなかった。何か巧妙な改良方式があるのかもしれない...。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
面白くてユーモラス
ニューデジタル, 2014.04.09 14:23
考えることを禁止すべき - 不愉快だ!
行を編んで詩にしています。
海は乾いた大地をなめる。
子供はおまるでウンチをする。
♪大人たちは魂にウンチをする♪
ここで自分の投稿を確認したのですが、増えていませんね。何か巧妙な改良方式があるのかもしれない...。
フォーラムの投稿のレーティングをカウントしないようにした(