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

 
Koldun Zloy:

意味がないんです。変える気がないのなら、だからといってコンストを作る必要はない。変数をprivateにすれば十分です。

そこから何かを得るのであれば理屈は通るが、自分で問題を作って いるだけだ。

constは追加制御です。そうでなければ、このディレクティブを言語に導入する必要は全くない。


public constフィールドの良いところは、READアクセス可能(参照渡し可能)であることです。しかし、間違って変更することは除外されます。


は、プログラムを書くときにとても役立っています。今回、初めて問題が発生しました。


また、thisや::を書けないところで使うのも有効です。

 
fxsaber:

constは追加制御です。そうでなければ、このディレクティブを言語に導入することを完全に避けることができたはずです。


public constフィールドは、READ可能(参照渡し可能)である点が良い。しかし、間違って変更することは除外されます。


は、プログラムを書くときにとても役立っています。今回、初めて問題が発生しました。


HH 書けないところにthisや::を使うのも有効です。

変数をprivateにする。読み込みに関数を使用する。 const int を参照渡しする必要はない。

 
Koldun Zloy:

変数をprivateにする。読み込むには関数を使用する。 const int を参照渡しする必要はない。

あなたは、単にconstを無視することを提案します。

 
fxsaber:

constは単に無視されるだけだと言いたいのでしょう。

いいえ、しかし、この特定のケースでは必要ありません。

 
まーた、何もないところから問題を作るのか。"ネズミは泣いても泣いても、サボテンをかじり続けた"
 
fxsaber:

実験してみたが、一般的にどんな解決策もどう見ても「欠陥」だ

実行速度と構造体フィールドへのアクセス制御の話であれば、醜い解答を書くこともできますが、それで問題は解決します

私は、構造体の静的メソッドを 完全にあきらめます。

はこのように表示されます。

int tmp[] = {1,2,3,99};
struct A
{
private:
   static int count;
public:
   const int a;
   A():a(tmp[count++]) {}
};
static int A::count = 0;
//+------------------------------------------------------------------+
void OnStart()
{
   A a[ArraySize(tmp)];
   for(int i=0;i<ArraySize(a);i++) Print(a[i].a);
}


...ダとカウントカウンタも必要ありません。実際には、構造体の配列を作成し、一時的な配列tmpを削除するマクロ置換でA[ArraySize(tmp)];をラップする必要があります。

 

同じファイルに対して、同時に2つのプログラムが動作しています。書き込む方はFILE_READ|FILE_WRITE|FILE_BIN|FILE_SHARE_READ フラグを使用します。FILE_READ|FILE_BIN|FILE_SHARE_WRITE|FILE_SHARE_READを読み取るもの。最初のプログラムはFileFlushを使用して定期的にファイルを保存しますが、2番目のプログラムはファイルを開いたときにのみファイルの長さを確認します。FileSeekを行ったり来たりしてみましたが、役に立ちません。

質問:ファイルを読み込むプログラムに、上書きするデータを拾わせるにはどうしたらいいでしょうか?

 

まとめます。

struct A {
    const int a; 
    A() {}
};
void OnStart()
{
            A a1; //(1) нормально
    const int a2; //(2) Error: 'a2' - 'const' variable must be initialized
}

1と2の違いは何ですか?

 
A100:

まとめます。

1と2の違いは何ですか?

このケースを初期化する機構が内蔵されていると期待したのですが、何もありません

struct A {
    const int a[10]; 
    A() {ArrayPrint(a);} //-396985669       32758 -1490812928       32757  2147360768           0 -1681390008         493           0           0

};
//+------------------------------------------------------------------+
void OnStart()
{
  A a1;
}
//+------------------------------------------------------------------+

ZS:ここでコンパイラが見るのは

void f()
{
   const int x;  //'x' - 'const' variable must be initialized
}
 
Igor Makanu:

このケースを初期化する仕組みが組み込まれていると期待していたのですが、何もありません

ZS: ここでコンパイラは

原理的にはそのようなケースはないはずで、この問題は(C++のように)コンパイラーレベルですでに解決されているはずです。そして、ここではそれが可能であり、結果として、数ページにわたる議論になります。