電子書籍の厳選無料作品が豊富!

あるクラスの配列のメンバ変数を、同一クラスのメンバ関数内で初期化(定義)する方法を教えてください。
ソースの概要は前回の同じです、そちらを参照お願いいたします。

前々回、前回の質問に関連する質問にいただいた回答で
・staticなフィールドの定義なら、メソッドと同じレベルに書く必要があること
・配列のメンバ変数の初期化の際、確実にDxlib初期化の後にLoadGraphを呼ぶようにすること
・static int bbb::InitCcc などといった、初期化用メソッドを用意して、任意のタイミングで初期化できるようにする
・素直にccc[0] = ....;ccc[1] = ....;という書き方が使える
ことはわかりました。

これらを参考に任意のタイミングで初期化できる初期化用メソッドを実装してみたところ、「現在のスコープ内で宣言または定義できません」というエラーが出ます。
コードは以下の通りです。

<aaa.h>
class bbb{
private:
static int ccc[8];
public:
void InitCcc();
};

<aaa.cpp>
#include"DxLib.h"
void bbb::InitCcc(){
//ここから
bbb::ccc[0] = ....;
bbb::ccc[1] = ....;
(中略)
bbb::ccc[7] = ....;
//ここまでの間で「現在のスコープ内で宣言または定義できません」というエラーを出していると思われる
}

この配列のメンバ変数を、同一クラスのメンバ関数内で初期化(定義)する方法を教えてください。
よろしくお願いいたします。

A 回答 (1件)

> bbb::ccc[0] = ....;


bbb:: が不要です。

というか、aaa.cpp のソースが本当にこれだけなら、#include"DxLib.h" と void bbb::InitCcc(){ の間に
#include "aaa.h"
int bbb::ccc[8];
が抜けています。
    • good
    • 1
この回答へのお礼

hitomaruさん
ご回答ありがとうございます。

言われたとおりにコードを盛り込んだところ、ちゃんと動くようになりました!
宣言、実体のところだけ作り、この間の定義の部分が抜けていました。
重要かつ基本的な部分を忘れていました。
本当にありがとうございます!

お礼日時:2016/03/14 19:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!