سؤال

وهذا قد يبدو وكأنه سؤال بسيط ولكن أنا على الحصول على خطأ عند إعداد هذا. أريد أن أكون قادرة على تمرير التعداد إلى أسلوب في 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);
}

هل أنت متأكد أنك قمت بها إعلان TYPES متاحة للقانون في كل من تعريف makeParticle والدعوة إلى ذلك؟ فهو لن يعمل إذا كنت تفعل هذا:

int main(void)
{
    makeParticle(PHOTON);
}

enum TYPES { PHOTON, NEUTRINO, QUARK, PROTON, ELECTRON };

void makeParticle(enum TYPES type)
{
}

ولأن التعليمات البرمجية main() لم تشهد أنواع حتى الان.

نصائح أخرى

وحاول تغيير

p.type = type;

إلى

p.type = (int)type;

وإذا كان هذا لا يساعد، الرجاء إضافة ملف .C كله، بما في ذلك تعريف struct Particle على سؤالك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top