مرجع غير محدد؟ هل هناك شيء لا أشاهده؟ (C ++، فئة Singleton)

StackOverflow https://stackoverflow.com/questions/774464

سؤال

لا أستطيع أن أبذل هذا المرجع غير محدد يذهب بعيدا.

(screenshot of issue)

لدي هذا الرمز تحت القسم الخاص من المشهد. h:

static Scene * scene_;

هناك #include "المشهد" في الجزء الأول جدا من رأس المشهد.cpp

هذا هو الخطأ الوحيد الذي أتلقى في الوقت الحالي، أي أفكار؟

سأوفر أي معلومات أخرى تريدها.

هل كانت مفيدة؟

المحلول

عندما تعلن عضوا ثابتا، يجب عليك أيضا تحديده في وحدة تجميع واحدة (وواحد فقط):

// a.h
class A
{
   static int x;
};

// a.cpp
int A::x = 0;

لن يحتفظ إعلان المتغير في الفصل بالذاكرة، فقط أخبر التحويل البرمجي (من وحدات الترجمة الأخرى) أنه سيكون هناك متغير يمكن الوصول إليه بواسطة هذا الاسم محدد في مكان ما.

نصائح أخرى

لماذا استخدام أ Scene* بدل من Sceneب أنت تقول أساسا "استخدام static لتخصيص مساحة كافية للمؤشر إلى Scene"ثم في وقت التشغيل، وضعت ذلك Scene كائن على كومة مع new (وأنا أفترض أبدا delete هو - هي).

بدلا من ذلك، فقط تخصيص ثابت وتهيئة ال Scene هدف:

static Scene scene_;

ثم قم بتغيير جميع المراجع إلى المشهد وفقا لذلك (-> يصبح.):

scene_.addObject(&object);

هذا أسهل ويأخذ ضغطات المفاتيح أقل إلى التمهيد. C ++ لا يتطلب new في كثير من الأحيان java أو c #.

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