0

次のようなコードがあります。

//Foo.h
OBJC_EXPORT MyObject *const myObj;

// Foo.m
MyObject *const myObj;

@implementation Foo

+(void) initialize
{
    if (self = [Graph class])
    {
          myObj = [Config get:@"Foo"]; // <--- ERROR! assignment of read-only variable 'Foo'

          // ....
    }
}

// ....

@end 

定数変数は構成ファイルから一度だけロードする必要があるため、これはこのように行う必要があります。そのように定数を使用するにはどうすればよいですか (はい、定数である必要があります。変更すると、まったく別の問題が発生するためです..)?

4

1 に答える 1

1

より良い方法がある可能性がありますが、私の最初の考えは、追加のポインター間接参照を介してそれを割り当てることです。

MyObject** nonConstObj = (MyObject**)&myObj;
*nonConstObj = [Config get:@"Foo"];

C ++の場合const_cast<>は適切ですが、最も一般的/同等のCイディオムについてはわかりません。

于 2010-10-22T17:39:00.880 に答える