質問
これは単純な質問のように思えるかもしれませんが、これをコンパイルするとエラーが発生します。 Cのメソッドに列挙型を渡すことができるようにしたい。
列挙
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
メソッドの呼び出し
makeParticle(PHOTON, 0.3f, 0.09f, location, colour);
方法
struct Particle makeParticle(enum TYPES type, float radius, float speed, struct Vector3 location, struct Vector3 colour)
{
struct Particle p;
p.type = type;
p.radius = radius;
p.speed = speed;
p.location = location;
p.colour = colour;
return p;
}
エラーが発生するのは、メソッドを呼び出しているときです:
割り当ての互換性のないタイプ
解決
この簡単な例では、私にとっては問題なくコンパイルできます:
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
void makeParticle(enum TYPES type)
{
}
int main(void)
{
makeParticle(PHOTON);
}
makeParticle
の定義とその呼び出しの両方で、 TYPES
の宣言をコードで使用できるようにしたことを確認していますか?これを行うと動作しません:
int main(void)
{
makeParticle(PHOTON);
}
enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };
void makeParticle(enum TYPES type)
{
}
main()
コードはまだTYPESを見ていないためです。
他のヒント
変更を試す
p.type = type;
to
p.type = (int)type;
これで問題が解決しない場合は、 struct Particle
の定義を含む.cファイル全体を質問に追加してください。
所属していません StackOverflow