2016-05-18 3 views
1

私はこれを初期化したいと思います。初期サイズは

main.cppに

string cameraSource = configFile.getItem("CAMERA_SOURCE"); 
if (cameraSource == "CAMERA_WGA") 
      { 
       frameFormat = FDESC_u8FORMAT_GRAY_8BIT_752_480; 
       frameWidth = 752; 
       frameHeight = 480; 

FRAME_SIZEは、それらがグローバル変数であり、frameWidth*frameHeightです。

しかし、unsigned char au8FrameBuffer[FRAME_SIZE]が一定のFRAME_SIZEを待っているので、私はそれを渡す方法を知らない。

+1

makeは 'あなたは、その大きさは、コンパイル時に知られなければならない静的な配列を使用しているので[FRAME_SIZE]' –

+1

割り当て 'チャーをポイントして設定ファイルを読んだ後、次いでチャーポインタをau8FrameBuffer'と。代わりに、構造体内の文字ポインタを使用して、そのサイズを計算した後にヒープ上に配列を動的に作成することができます。 –

答えて

1

構造体に文字ポインタを使用し、サイズを計算した後にヒープ上に配列を動的に作成することができます。

typedef struct { 
    ... 
    unsigned char* au8FrameBuffer; 
    ... 
}tstrFrameRawData; 

.... 

FRAME_SIZE=frameWidth*frameHeight; 
tstrFrameRawData.au8FrameBuffer=new unsigned char[FRAME_SIZE];//dynamically created the array 

.... 
//delete[] tstrFrameRawData.au8FrameBuffer;//delete it once you are done 
1

文字配列の代わりに、std::vector<char>を使用します。これは、コンストラクタ呼び出しで正しいサイズに設定するか、resizeで設定できます。ポインタを使用する必要があるとき&buf[0]

関連する問題