คำถามติดแท็ก forward-declaration

13
เมื่อใดที่ฉันจะใช้การประกาศล่วงหน้า
ฉันกำลังมองหาคำจำกัดความของเมื่อฉันได้รับอนุญาตให้ทำการประกาศไปข้างหน้าของคลาสในไฟล์ส่วนหัวของคลาสอื่น: ฉันอนุญาตให้ทำสำหรับคลาสพื้นฐานสำหรับคลาสที่จัดเป็นสมาชิกสำหรับคลาสที่ส่งไปยังฟังก์ชันสมาชิกโดยอ้างอิงหรือไม่?


8
การประกาศล่วงหน้าใน C ++ คืออะไร
ที่: http://www.learncpp.com/cpp-tutorial/19-header-files/ ต่อไปนี้จะกล่าวถึง: add.cpp: int add(int x, int y) { return x + y; } main.cpp: #include <iostream> int add(int x, int y); // forward declaration using function prototype int main() { using namespace std; cout << "The sum of 3 and 4 is " << add(3, 4) << endl; …

9
ผู้รับประเภท *** สำหรับข้อความตัวอย่างเป็นการประกาศล่วงหน้า
ในแอพ iOS5 ของฉันฉันมีNSObject Statesชั้นเรียนและพยายามเริ่ม: states = [states init]; นี่คือinitวิธีการในStates: - (id) init { if ((self = [super init])) { pickedGlasses = 0; } return self; } แต่มีข้อผิดพลาดในบรรทัด states = [states init]; ผู้รับประเภท "สถานะ" สำหรับข้อความตัวอย่างเป็นการประกาศล่วงหน้า มันหมายความว่าอะไร? ผมทำอะไรผิดหรือเปล่า?

7
การส่งต่อการประกาศประเภท / คลาสที่ซ้อนกันใน C ++
ฉันเพิ่งติดอยู่ในสถานการณ์เช่นนี้: class A { public: typedef struct/class {...} B; ... C::D *someField; } class C { public: typedef struct/class {...} D; ... A::B *someField; } โดยปกติคุณสามารถประกาศชื่อคลาสได้: class A; แต่คุณไม่สามารถส่งต่อชนิดที่ซ้อนกันได้สาเหตุต่อไปนี้เป็นข้อผิดพลาดในการรวบรวม class C::D; ความคิดใด ๆ

15
เป็นไปได้ไหมที่จะส่งต่อประกาศฟังก์ชันใน Python
เป็นไปได้ไหมที่จะส่งต่อประกาศฟังก์ชันใน Python ฉันต้องการเรียงลำดับรายการโดยใช้cmpฟังก์ชั่นของตัวเองก่อนที่จะมีการประกาศ print "\n".join([str(bla) for bla in sorted(mylist, cmp = cmp_configs)]) ฉันจัดระเบียบโค้ดเพื่อกำหนดนิยามของcmp_configsวิธีหลังจากการภาวนา มันล้มเหลวด้วยข้อผิดพลาดนี้: NameError: name 'cmp_configs' is not defined มีวิธีใดที่จะ "ประกาศ" cmp_configsวิธีการก่อนที่มันจะใช้? มันจะทำให้โค้ดของฉันดูสะอาดขึ้นไหม ฉันคิดว่าบางคนจะถูกล่อลวงให้บอกฉันว่าฉันควรจัดระเบียบรหัสของฉันใหม่เพื่อที่ฉันจะได้ไม่มีปัญหานี้ อย่างไรก็ตามมีบางกรณีที่อาจหลีกเลี่ยงไม่ได้เช่นเมื่อใช้การเรียกซ้ำบางรูปแบบ ถ้าคุณทำไม่ได้เช่นตัวอย่างนี้สมมติว่าผมมีกรณีที่มันเป็นความจริงที่จำเป็นเพื่อส่งต่อประกาศฟังก์ชั่น พิจารณากรณีนี้ที่จำเป็นต้องใช้ฟังก์ชันการประกาศล่วงหน้าใน Python: def spam(): if end_condition(): return end_result() else: return eggs() def eggs(): if end_condition(): return end_result() else: return spam() ที่ไหนend_conditionและend_resultมีการกำหนดไว้ก่อนหน้านี้ เป็นทางออกเดียวที่จะจัดระเบียบรหัสใหม่และมักจะใส่คำจำกัดความก่อนที่จะเรียก?

3
จะส่งต่อประกาศคลาสเทมเพลต C ++ ได้อย่างไร
กำหนดคลาสเทมเพลตดังต่อไปนี้: template<typename Type, typename IDType=typename Type::IDType> class Mappings { public: ... Type valueFor(const IDType& id) { // return value } ... }; มีคนส่งต่อประกาศคลาสนี้ในไฟล์ส่วนหัวได้อย่างไร

2
ไปข้างหน้าการประกาศฟังก์ชันใน Bash หรือเชลล์สคริปต์?
มีสิ่งนั้นในbashหรืออย่างน้อยก็มีบางอย่างที่คล้ายกัน (วิธีแก้ปัญหา) เช่นการประกาศล่วงหน้าที่รู้จักกันดีใน C / C ++ หรือไม่? หรือมีสิ่งนั้นเพราะตัวอย่างเช่นมันถูกดำเนินการในครั้งเดียวเสมอ (บรรทัดหลังบรรทัด)? หากไม่มีการประกาศล่วงหน้าฉันควรทำอย่างไรเพื่อให้สคริปต์อ่านง่ายขึ้น ค่อนข้างยาวและคำจำกัดความของฟังก์ชันเหล่านี้ในตอนต้นผสมกับตัวแปรส่วนกลางทำให้สคริปต์ของฉันดูน่าเกลียดและอ่าน / เข้าใจยาก)? ฉันขอให้เรียนรู้แนวทางปฏิบัติที่เป็นที่รู้จัก / ดีที่สุดสำหรับกรณีดังกล่าว ตัวอย่างเช่น: # something like forward declaration function func # execution of the function func # definition of func function func { echo 123 }
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.