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

 

コンパイルエラー: コンパイラは私が参照でポインタを渡していると考えています。

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 )でもエラーが発生するはずです。
 
Lone_Irbis:

ここにコードと.setを全部載せるのは気が引けますが、どこかに送ることはできます。

ありがとうございました。再現してみましょう。コードはservicedeskに送ることができます(すべてのチェックの後、それが削除されることが保証されます)。
 

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 オブジェクトを含むあらゆるオブジェクトに対して呼び出されるからです)。

削除済み  
の投稿がカウントされなくなりました(
 
GriFFon4ik:
の投稿がカウントされなくなりました(
そう、もはや・・・。
 
GriFFon4ik:
の投稿がカウントされなくなりました(
何でもいいんです。
削除済み  
barabashkakvn:
まあ、いいや。
悲しい:-)
 

ポストを確認したら、増えていなかった。何か巧妙な改良方式があるのかもしれない...。

トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム

面白くてユーモラス

ニューデジタル, 2014.04.09 14:23

考えることを禁止すべき - 不愉快だ!

行を編んで詩にしています。
海は乾いた大地をなめる。
子供はおまるでウンチをする。
♪大人たちは魂にウンチをする♪

レーティングはどうなったんだろう。
削除済み  
newdigital:

ここで自分の投稿を確認したのですが、増えていませんね。何か巧妙な改良方式があるのかもしれない...。

レーティングはどうなったんだろう。
動いている)が、ない(
削除済み  
フォーラムの投稿のレーティングをカウントしないようにした(
エラー , ウェブサイト 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

現在、レーティングは定期的に割り当てられ、遅延が発生します