ページ 1 / 1
列挙型についての質問
Posted: 2013年5月26日(日) 22:06
by ヨシタケ
列挙型についてを用いているのですが、
列挙型eBarStateは複数のソースで用いるためヘッダに定義していて、
コード:
//バーの状態
typedef enum {
normal, //通常
down, //ダウン
damage //ダメージ
}eBarState;
となっています。しかしこれとは別に列挙型eENEMYSTATEがあり
コード:
//敵・ボスの状態
typedef enum {
normal, //通常
attack, //攻撃
down //ダウン
}eENEMYSTATE;
というようになっていて、normalとdownがかぶってしまいエラーが出てしまいます。
名前をこのまま使いたいのでかぶってしまってもエラーが出ないようにする方法があったら教えてほしいと思い書き込みました。
Re: 列挙型についての質問
Posted: 2013年5月26日(日) 22:16
by h2so5
Cでは名前を変えるしかないですが、C++の場合は名前空間で分けることができます。
Re: 列挙型についての質問
Posted: 2013年5月26日(日) 23:15
by ヨシタケ
一応、VisualStudioでC言語基準で作っているのですが、
列挙型だけC++みたいに名前空間を使ったら変ですか?(C++についてまだあまり理解していないので可能かどうかはわかりませんが)
Re: 列挙型についての質問
Posted: 2013年5月28日(火) 00:00
by softya(ソフト屋)
eENEMYSTATEだけ別の名前空間に入れれば良い気もしますが、eENEMYSTATEの名前を変えても大して手間は変わらないような。
変なふうに書いてたら逆にバグの危険性が高まる気もします。
Re: 列挙型についての質問
Posted: 2013年5月28日(火) 01:14
by little
一応こうもできるかと。
► スポイラーを表示
コード:
// test1.h
#pragma once
struct test1 {
//バーの状態
typedef enum {
normal, //通常
down, //ダウン
damage //ダメージ
}eBarState;
};
コード:
// test2.h
#pragma once
struct test2 {
//敵・ボスの状態
typedef enum {
normal, //通常
attack, //攻撃
down //ダウン
}eENEMYSTATE;
};
コード:
#include <stdio.h>
#include "test1.h"
#include "test2.h"
int main()
{
printf( "%d\n", test1::down );
printf( "%d\n", test2::down );
getchar();
return 0;
}
Re: 列挙型についての質問
Posted: 2013年5月28日(火) 06:55
by h2so5
>> littleさん
そのコードはCではなくてC++です。
構造体の中でのtypedefはC言語ではできません。
Re: 列挙型についての質問
Posted: 2013年5月28日(火) 22:43
by little
ごめんなさい(´・ω・`)
Re: 列挙型についての質問
Posted: 2013年6月02日(日) 22:03
by ヨシタケ
返事が遅れてしまってすいませんでした。
とりあえず、少し名前を変えるやり方でいこうと思います。