لا يمكن الدفع () قائمة مكتبة قياسية مع كائناتي في C ++
سؤال
لدي فصل وأود استخدام قائمة المكتبة القياسية لتخزين قائمة بها. أرغب في الأساس في الضغط () القائمة. لذلك رمزي مثل هذا:
#include <list>
/* ... lots of stuff ...*/
complexNode myObject();
std::list<complexNode> complexList();
myList.push_front(myObject);
لكن المترجم يلقي هذا الخطأ:
خطأ: طلب العضو "push_front" في "القائمة معقدة"، والتي هي قائمة غير من النوع STD :: u003CcomplexNode, std::allocatoru003CcomplexNode> > () () '
يحتوي Class Complexnode على نسخ متعجنة.
أنا حقا لا أفهم المشكلة وماذا يعني هذا الخطأ في الواقع ... الرجاء المساعدة!
المحلول
std::list<complexNode> complexList();
لا ينبغي أن يكون هذا:
std::list<complexNode> complexList; // without the ()
نصائح أخرى
هذه:
std::list<complexNode> complexList();
لديه الاسم الشائع "C ++ أكثر تحليل vexing". باختصار، لقد صنعت complexList
يكون إعلان الوظيفة التي ترجع قائمة، بدلا من متغير محلي. مسح ال ()
, ، ثم لا يمكن تحليلها كدالة.
لا تنتمي إلى StackOverflow