質問

これは単純な質問のように思えるかもしれませんが、これをコンパイルするとエラーが発生します。 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ファイル全体を質問に追加してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top