私はSDLを使って簡単なプログラムを書いていますが、私は奇妙な問題にぶち当たっています。まずコード:問題グローバル変数ヘッダーファイルの配列を初期化するC++
#ifndef GLOBAL_VARIABLES_H
#define GLOBAL_VARIABLES_H
#include <string>
#include <cassert>
#include "SDL.h"
#include "SDL_image.h"
using std::string;
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const int SCREEN_BPP = 32;
const string MAIN_BACKGROUND_FILENAME = "tempBackground.jpg";
SDL_Rect CARD_CLIPS[2];
const int CARD_BACK = 0;
const int CARD_FRONT = 1;
CARD_CLIPS[CARD_BACK].h = 196;
CARD_CLIPS[CARD_BACK].w = 286/2;
CARD_CLIPS[CARD_BACK].x = 286/2;
CARD_CLIPS[CARD_BACK].y = 0;
CARD_CLIPS[CARD_FRONT].h = 196;
CARD_CLIPS[CARD_FRONT].w = 286/2;
CARD_CLIPS[CARD_FRONT].x = 0;
CARD_CLIPS[CARD_FRONT].y = 0;
#endif
私は取得していますエラーはこれです:私はSDL_Rectの要素を初期化しようとするたびに
1>c:\users\--\global variables.h(23): error C2466: cannot allocate an array of constant size 0
1>c:\users\--\global variables.h(23): error C2143: syntax error : missing ';' before '.'
1>c:\users\--\global variables.h(23): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\--\global variables.h(23): error C2371: 'CARD_CLIPS' : redefinition; different basic types
1>c:\users\--\global variables.h(18) : see declaration of 'CARD_CLIPS'
繰り返し同じエラー。
SDLの部分は問題とは関係ありません。 int配列を宣言して同じ方法で初期化しようとすると、まったく同じエラーが発生します。私がmain.cppにこれを置くと、それは完全にうまく動作します。
ありがとうございました。追加情報が必要な場合はお知らせください。
EDIT:ヘッダーファイルで配列を使用しようとするとき以外はエラーが発生しないことに注意してください。従来のやり方を理解するために何をしているのですが、基本的な観点から、このようなヘッダファイルで配列を宣言して初期化することができない理由を理解したいと思います。
クラスSDL_Rectはどのように定義されていますか? SDL_Rectでは、デフォルトコンストラクタを使用してオブジェクトを作成することはできません。 – mukeshkumar
SDL_Rectとは関係がありません。私が言ったように、intやその他のものを使用しようとすると同じエラーが発生します。 – Slims