「メニュー画面の作り方」でエラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
pope
記事: 5
登録日時: 13年前

「メニュー画面の作り方」でエラー

#1

投稿記事 by pope » 13年前

こちらのサイトの、新ゲームプログラミングの館に掲載されている、メニュー画面の作り方を参考に(というか書き方以外そのまま)骨格を作ってみたところ、エラーが発生してしまいました。
元のソースと見比べたり、暫く格闘してみたのですが、わかりそうにないので質問させて下さい。

開発環境はVisualStudio2010Pro、DXライブラリ利用、使用言語はC++です。
プログラミングの経験は2年程になります。C++は初心者です。
中身は掲載されているコードにfps制御をつけただけなのですが、命名等を自分の書きやすい様に改変してしまったため、見づらい箇所があったら申し訳ありません。

コード:

// scenemanager.cpp
#include "DxLib.h"
#include "scenemanager.h"
#include "start.h"
#include "game.h"
#include "config.h"


SceneManager::SceneManager()
	: nextScene(None) {
	scene = (BaseScene*) new Start(this);
}

void SceneManager::initialize() {
	scene->initialize();
}
void SceneManager::finalize() {
	scene->finalize();
}

void SceneManager::update() {
	if(nextScene != None) {
		scene->finalize();
		delete scene;
		switch(nextScene) {
		case Start:
			scene = (BaseScene*) new Start(this);
			break;
		case Game:
			scene = (BaseScene*) new Game(this);
			break;
		case Config:
			scene = (BaseScene*) new Config(this);

		}
		this->nextScene = None;
		scene->initialize();
	}
	scene->update();
}


void SceneManager::draw(){
    scene->draw();
}

void SceneManager::changeScene(eScene nextScene){
    this->nextScene = nextScene;
}
ここが実際にエラーを吐いている箇所です。SceneManagerクラスのソースファイル内で、scene = (BaseScene*) new Game(this);の様にインスタンスを生成しようとすると、Gameの部分が構文エラーになってしまいます。

# 1> scenemanager.cpp
# 1>e:\***\samplegame2\samplegame2\scenemanager.cpp(10): error C2061: 構文エラー : 識別子 'Start'
# 1>e:\***\samplegame2\samplegame2\scenemanager.cpp(26): error C2061: 構文エラー : 識別子 'Start'
# 1>e:\***\samplegame2\samplegame2\scenemanager.cpp(29): error C2061: 構文エラー : 識別子 'Game'
# 1>e:\***\samplegame2\samplegame2\scenemanager.cpp(32): error C2061: 構文エラー : 識別子 'Config'

また、オンマウス時の警告として、

# <error-type>::<error-type>(const <error-type>&)
# <error-type>::<error-type>()
#
# Error: 型指定子が必要です

と表示されます。
もしかしたら些細なミスかもしれませんが、力を貸してもらえたら嬉しいです。

全て書くと長くなってしまうのと、何処が直接エラーに繋がっているか分からないため、プロジェクトごとをアップロードしておきます。手間になってしまいますが、申し訳ありません。
ttp://ux.getuploader.com/pope/download/33/SampleGame2.zip

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 「メニュー画面の作り方」でエラー

#2

投稿記事 by softya(ソフト屋) » 13年前

enumでの 識別子とクラス名が被っているのが原因です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

pope
記事: 5
登録日時: 13年前

Re: 「メニュー画面の作り方」でエラー

#3

投稿記事 by pope » 13年前

ああ!なるほどです…。
普段列挙型を使わないので名前の重複を全然気にしてませんでした。
しっかり考えて書いていくよう気をつけます。
ありがとうございました。

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: 「メニュー画面の作り方」でエラー

#4

投稿記事 by Dixq (管理人) » 13年前

館では以下のように書いていると思います。

コード:

typedef enum {
    eScene_Menu,    //メニュー画面
    eScene_Game,    //ゲーム画面
    eScene_Config,  //設定画面
} eScene ;
enumは先頭にeを付けることで他と区別することができますよ。

pope
記事: 5
登録日時: 13年前

Re: 「メニュー画面の作り方」でエラー

#5

投稿記事 by pope » 13年前

サンプルプロジェクトを見ながら勝手な命名規則でコーディングしてしまっていたので、今回のようなミスが出てしまいました…。
仰るとおり、列挙型にはeを先頭につけるようにします。
講座も含め、回答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る