引数付きのコンストラクタについて...
Posted: 2016年8月19日(金) 23:42
連日の初歩的な質問をお許しください。
クラスを作成していたところ引数つきのコンストラクタを定義したら次のような
エラーが吐かれてしまいました。なお2Dでフィールドに文字をちりばめて
ひとつの単語(もしくは曲名や人物など)にするというゲームです。なので単語を1文字1文字に分けて
ランダムにフィールドに表示する・・・・・といったところで詰まっています
1>c:\users\------\desktop\gameprog2\gameprog2\class.h(60) : error C2146: 構文エラー : ')' が、識別子 'Input' の前に必要です。
1>c:\users\------\desktop\gameprog2\gameprog2\class.h(60) : error C3646: 'Input' : 不明なオーバーライド指定子です
1>c:\users\------\desktop\gameprog2\gameprog2\class.h(60) : error C2059: 構文エラー : ')'
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(88) : error C2059: 構文エラー : ')'
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(90) : error C2065: 'Input' : 定義されていない識別子です。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(90) : error C2070: ''unknown-type'': sizeof オペランドが正しくありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(93) : error C2065: 'Input' : 定義されていない識別子です。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(93) : error C2070: ''unknown-type'': sizeof オペランドが正しくありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(94) : error C2065: 'Input' : 定義されていない識別子です。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(102) : error C2143: 構文エラー : ')' が '{' の前にありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(111) : error C2440: '=' : 'int *' から 'int [20]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(112) : error C2440: '=' : 'int *' から 'int [20]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(115) : error C2601: 'Mozi::answerPutmap' : ローカル関数の定義が正しくありません。
1> c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(88): この行は '{' を含んでいますが、これに対応するものがありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(130) : fatal error C1075: 左側 中かっこ '{' に対応するものが 'c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(88)' で見つかる前に EOF が検出されました。
//Class.h
class Mozi{
public:
char answer[20]; //答え
int x[20],y[20]; //座標
int point; //正解した時に入る得点
int scope; //文字の当たり範囲
int Random_X[20],Random_Y[20]; //文字の位置のrandomの数を入れる
bool InputFlag; //文字をダブらず配置させるためのフラグ
Mozi(char[] Input); //コンストラクタ
void answerPutmap(int Time); //答えのピースをちりばめる
//bool answercheck(); //答えがあっているかを確認する(未実装)
};
//------------------------------Class.h終わり---------------------------------------
//Class.cpp
Mozi::Mozi(char[] Input){
point=2*sizeof(Input);
scope=6; //文字の当たり範囲は6
for(int i=0;i<sizeof(Input);i++){
answer=Input; //文字をいれていく
InputFlag=true;
//文字の位置をかぶらないようにしたい・・・・・・・・・・・・・・
while(InputFlag){
Random_X=GetRand(290)+20; //文字の位置をRandomにとる
Random_Y=GetRand(270)+20;
for(int j=0;j<i;j++){
if(abs(Random_X-Random_X[j])>20 && abs(Random_Y-Random_Y[j]<20){ //ほかの文字との距離感が程よい位置になったら
if(j==i-1) InputFlag=false; //全部程よい位置ならそこで確定する
}else{
break;
}
}//for(int j=0;j<i;j++)
}//while(InputFlag)
x=Random_X+40;
y=Random_Y+40;
}
void Mozi::answerPutmap(int Time){
extern int image[30];
static int English[sizeof(answer)];
for(int i=0;i<sizeof(answer);i++){
if(answer>90){
English=answer-97; //小文字のとき
}else{
English=answer[i]-65; //大文字のとき
}
DrawRotaGraph(x,y+8*(sin(PI*(Time+3*i)/30)+1)/2,1.5f,0.0f,image[English[i]],TRUE);
}
}
//----------------------------class.cpp終わり-----------------------------------------
//draw.cpp(描画を行なう部分の関連がありそうなところのみ)
//文字を描画する
void Mozidraw(int Time){
Mozi mozi("FLOWER");
mozi.answerPutmap(Time);
}
//draw.cpp終わり
以上となります。長文になってしまい申し訳ありません.....
どなたか原因と解決策をご教授していただけると大変助かります。
クラスを作成していたところ引数つきのコンストラクタを定義したら次のような
エラーが吐かれてしまいました。なお2Dでフィールドに文字をちりばめて
ひとつの単語(もしくは曲名や人物など)にするというゲームです。なので単語を1文字1文字に分けて
ランダムにフィールドに表示する・・・・・といったところで詰まっています
1>c:\users\------\desktop\gameprog2\gameprog2\class.h(60) : error C2146: 構文エラー : ')' が、識別子 'Input' の前に必要です。
1>c:\users\------\desktop\gameprog2\gameprog2\class.h(60) : error C3646: 'Input' : 不明なオーバーライド指定子です
1>c:\users\------\desktop\gameprog2\gameprog2\class.h(60) : error C2059: 構文エラー : ')'
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(88) : error C2059: 構文エラー : ')'
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(90) : error C2065: 'Input' : 定義されていない識別子です。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(90) : error C2070: ''unknown-type'': sizeof オペランドが正しくありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(93) : error C2065: 'Input' : 定義されていない識別子です。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(93) : error C2070: ''unknown-type'': sizeof オペランドが正しくありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(94) : error C2065: 'Input' : 定義されていない識別子です。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(102) : error C2143: 構文エラー : ')' が '{' の前にありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(111) : error C2440: '=' : 'int *' から 'int [20]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(112) : error C2440: '=' : 'int *' から 'int [20]' に変換できません。
1> 配列型への変換はありませんが、参照またはポインタから配列への変換があります。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(115) : error C2601: 'Mozi::answerPutmap' : ローカル関数の定義が正しくありません。
1> c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(88): この行は '{' を含んでいますが、これに対応するものがありません。
1>c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(130) : fatal error C1075: 左側 中かっこ '{' に対応するものが 'c:\users\kazuki\desktop\gameprog2\gameprog2\class.cpp(88)' で見つかる前に EOF が検出されました。
//Class.h
class Mozi{
public:
char answer[20]; //答え
int x[20],y[20]; //座標
int point; //正解した時に入る得点
int scope; //文字の当たり範囲
int Random_X[20],Random_Y[20]; //文字の位置のrandomの数を入れる
bool InputFlag; //文字をダブらず配置させるためのフラグ
Mozi(char[] Input); //コンストラクタ
void answerPutmap(int Time); //答えのピースをちりばめる
//bool answercheck(); //答えがあっているかを確認する(未実装)
};
//------------------------------Class.h終わり---------------------------------------
//Class.cpp
Mozi::Mozi(char[] Input){
point=2*sizeof(Input);
scope=6; //文字の当たり範囲は6
for(int i=0;i<sizeof(Input);i++){
answer=Input; //文字をいれていく
InputFlag=true;
//文字の位置をかぶらないようにしたい・・・・・・・・・・・・・・
while(InputFlag){
Random_X=GetRand(290)+20; //文字の位置をRandomにとる
Random_Y=GetRand(270)+20;
for(int j=0;j<i;j++){
if(abs(Random_X-Random_X[j])>20 && abs(Random_Y-Random_Y[j]<20){ //ほかの文字との距離感が程よい位置になったら
if(j==i-1) InputFlag=false; //全部程よい位置ならそこで確定する
}else{
break;
}
}//for(int j=0;j<i;j++)
}//while(InputFlag)
x=Random_X+40;
y=Random_Y+40;
}
void Mozi::answerPutmap(int Time){
extern int image[30];
static int English[sizeof(answer)];
for(int i=0;i<sizeof(answer);i++){
if(answer>90){
English=answer-97; //小文字のとき
}else{
English=answer[i]-65; //大文字のとき
}
DrawRotaGraph(x,y+8*(sin(PI*(Time+3*i)/30)+1)/2,1.5f,0.0f,image[English[i]],TRUE);
}
}
//----------------------------class.cpp終わり-----------------------------------------
//draw.cpp(描画を行なう部分の関連がありそうなところのみ)
//文字を描画する
void Mozidraw(int Time){
Mozi mozi("FLOWER");
mozi.answerPutmap(Time);
}
//draw.cpp終わり
以上となります。長文になってしまい申し訳ありません.....
どなたか原因と解決策をご教授していただけると大変助かります。