لا يمكن الدفع () قائمة مكتبة قياسية مع كائناتي في C ++

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

  •  23-08-2019
  •  | 
  •  

سؤال

لدي فصل وأود استخدام قائمة المكتبة القياسية لتخزين قائمة بها. أرغب في الأساس في الضغط () القائمة. لذلك رمزي مثل هذا:

#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 يكون إعلان الوظيفة التي ترجع قائمة، بدلا من متغير محلي. مسح ال (), ، ثم لا يمكن تحليلها كدالة.

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