คำถามติดแท็ก c++

คำถามเกี่ยวกับ C ++ ซึ่งเป็นภาษาการเขียนแบบสแตติกแบบหลายกระบวนทัศน์รวบรวมภาษาการเขียนโปรแกรมสำหรับวัตถุประสงค์ทั่วไป

8
การเรียน makefiles มีความสำคัญแค่ไหน? [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันทำงานใน c ++ ส่วนใหญ่เป็นงานอดิเรก (ฉันยังเรียนหนังสืออยู่และไม่มีงานจริง) IDEs สร้าง makefile ให้ฉันและฉันก็สงสัยว่ามันคุ้มค่าที่จะเรียนรู้วิธีทำให้มันเป็นตัวของตัวเองหรือเปล่า โดย "การเรียนรู้ที่คุ้มค่า" ฉันหมายถึงฉันควรวางทุกอย่างและเรียนรู้วิธีการเขียนก่อนที่จะเรียนรู้ c ++ ต่อไปหรือไม่ การเรียนรู้พวกเขาจะจำเป็นจริงๆหรือ? ถ้าเป็นเช่นนั้นฉันควรเรียนรู้เกี่ยวกับพวกเขา (ไวยากรณ์ทั่วไปและความเข้าใจวิธีการทำงาน ฯลฯ ) หรือเรียนรู้วิธีการเขียนพวกเขาจริง ๆ ?
12 java  learning  c++  syntax  make 

4
การเขียนโปรแกรมเชิงวัตถุ: getters / setters หรือชื่อตรรกะ
ฉันกำลังคิดเกี่ยวกับส่วนต่อประสานกับชั้นเรียนที่ฉันกำลังเขียน คลาสนี้มีสไตล์สำหรับตัวละครตัวอย่างเช่นตัวละครเป็นตัวหนาตัวเอียงขีดเส้นใต้และอื่น ๆ ฉันได้ถกเถียงกับตัวเองเป็นเวลาสองวันว่าฉันควรใช้ getters / setters หรือชื่อโลจิคัลสำหรับวิธีที่เปลี่ยนค่าเป็น สไตล์เหล่านี้ ในขณะที่ฉันมักจะชอบชื่อแบบลอจิคัลมันหมายถึงการเขียนรหัสที่ไม่มีประสิทธิภาพและไม่เป็นแบบลอจิคัล ให้ฉันยกตัวอย่างให้คุณ ฉันมีชั้นเรียนCharacterStylesที่มีตัวแปรสมาชิกbold, italic, underline(และอื่น ๆ บางอย่าง แต่ฉันจะปล่อยให้พวกเขาออกไปให้มันง่าย) วิธีที่ง่ายที่สุดที่จะช่วยให้ส่วนอื่น ๆ ของโปรแกรมที่จะเข้าถึงตัวแปรเหล่านี้จะเขียนวิธีการ getter / หมาเพื่อให้คุณสามารถทำและstyles.setBold(true)styles.setItalic(false) แต่ฉันไม่ชอบสิ่งนี้ ไม่เพียงเพราะผู้คนจำนวนมากพูดว่าผู้ได้รับ / setters ทำลายการห่อหุ้ม (มันเลวร้ายจริงๆเหรอ?) แต่ส่วนใหญ่เป็นเพราะมันไม่สมเหตุสมผล ฉันคาดหวังที่จะจัดสไตล์ตัวละครผ่านวิธีการหนึ่งstyles.format("bold", true)หรือบางอย่างเช่นนั้น แต่ไม่ผ่านวิธีเหล่านี้ทั้งหมด แม้ว่าจะมีปัญหาหนึ่งข้อ เนื่องจากคุณไม่สามารถเข้าถึงตัวแปรสมาชิกวัตถุโดยเนื้อหาของสตริงใน C ++ ฉันจะต้องเขียนคอนเทนเนอร์ if-statement / switch ขนาดใหญ่สำหรับสไตล์ทั้งหมดหรือฉันจะต้องเก็บสไตล์ไว้ในอาเรย์แบบเชื่อมโยง ( แผนที่). ฉันไม่สามารถเข้าใจได้ว่าวิธีที่ดีที่สุดคืออะไร ช่วงเวลาหนึ่งฉันคิดว่าฉันควรเขียนตัวรับสัญญาณ / ผู้ตั้งค่าและช่วงเวลาถัดไปที่ฉันเอนตัวไปทางอื่น คำถามของฉันคือคุณจะทำอย่างไร แล้วทำไมคุณถึงทำอย่างนั้น?

3
บรรลุความเข้ากันได้กับ C ++ 11
ฉันทำงานกับแอพพลิเคชั่นซอฟต์แวร์ขนาดใหญ่ที่ต้องใช้งานบนหลายแพลตฟอร์ม บางแพลตฟอร์มเหล่านี้รองรับคุณสมบัติบางอย่างของ C ++ 11 (เช่น MSVS 2010) และบางแพลตฟอร์มไม่รองรับ (เช่น GCC 4.3.x) ฉันคาดว่าสถานการณ์นี้จะดำเนินต่อไปอีกหลายปี (คาดเดาที่ดีที่สุดของฉัน: 3-5 ปี) เนื่องจากว่าฉันต้องการตั้งค่าอินเทอร์เฟซที่ใช้งานร่วมกันได้ซึ่งผู้คนสามารถเขียนโค้ด C ++ 11 ที่จะยังคงคอมไพล์ด้วยคอมไพเลอร์รุ่นเก่าที่มีความเป็นไปได้ในระดับใดก็ตาม โดยรวมแล้วเป้าหมายคือการลด # ifdef ให้มากที่สุดเท่าที่จะเป็นไปได้ในขณะที่ยังคงเปิดใช้งานไวยากรณ์ / คุณสมบัติ C ++ 11 พื้นฐานบนแพลตฟอร์มที่สนับสนุนพวกเขาและให้การจำลองบนแพลตฟอร์มที่ไม่รองรับ เริ่มต้นด้วย std :: move () วิธีที่ชัดเจนที่สุดในการบรรลุความเข้ากันได้คือการใส่บางอย่างในไฟล์ส่วนหัวร่วม: #if !defined(HAS_STD_MOVE) namespace std { // C++11 emulation template <typename T> inline T& …
12 c++  c++11 

7
หลังจากเขียนโค้ดแล้วทำไมฉันถึงรู้สึกว่า“ ฉันจะเขียนได้ดีขึ้น” หลังจากผ่านไประยะหนึ่ง [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันทำงานเกี่ยวกับโครงการอดิเรกใน C ++ เป็นเวลานานกว่า 2 ปีแล้ว เมื่อใดก็ตามที่ฉันเขียนโมดูล / ฟังก์ชั่นฉันรหัสมันด้วยความคิดมากมาย ตอนนี้ดูปัญหา do { --> write the code in module 'X' and test it --> ... forget for sometime ... --> revisit the same piece of code (due to some requirement) --> feel that …

3
คลาสกับโครงสร้าง
ใน C ++ และภาษาอิทธิพลอื่น ๆ ที่มีการสร้างโครงสร้างที่เรียกว่า ( struct) classและอื่นที่เรียกว่า ทั้งสองมีความสามารถในการเก็บฟังก์ชั่นและตัวแปร ความแตกต่างบางประการคือ: คลาสจะได้รับหน่วยความจำในฮีปและstructได้รับหน่วยความจำในสแต็ก (หมายเหตุ: นี่คือสิ่งที่ผิดสำหรับ C ++ แต่อาจถูกต้องในสิ่งที่ OP เรียกว่า "ภาษาที่มีอิทธิพล") ตัวแปรคลาสเป็นค่าเริ่มต้นและstructเป็นแบบสาธารณะ คำถามของฉันคือ: ถูกstructยกเลิกอย่างใดสำหรับชั้นเรียน? ถ้าเป็นเช่นนั้นทำไม นอกเหนือจากความแตกต่างข้างต้น a structสามารถทำสิ่งเดียวกับที่ชั้นเรียนทำได้ เหตุใดจึงต้องละทิ้งมัน

12
เหตุใด C ++ มักเป็นภาษาแรกที่สอนในวิทยาลัย [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน6 ปีที่ผ่านมา ล็อคแล้ว คำถามและคำตอบของคำถามนี้ถูกล็อคเนื่องจากคำถามอยู่นอกหัวข้อ แต่มีความสำคัญทางประวัติศาสตร์ ขณะนี้ไม่ยอมรับคำตอบหรือการโต้ตอบใหม่ โรงเรียนของฉันเริ่มหลักสูตรวิทยาการคอมพิวเตอร์ด้วยหลักสูตรการเขียนโปรแกรม C ++ ซึ่งหมายความว่านี่เป็นภาษาแรกที่นักเรียนจำนวนมากเรียนรู้ ฉันเคยเห็นว่าหลายคนไม่ชอบ C ++ และฉันได้อ่านสาเหตุหลายประการด้วยกัน ดูเหมือนว่าเป็นความคิดเห็นที่นิยมว่า C ++ ไม่ใช่ภาษาที่ดีมาก ฉันได้รับความประทับใจว่าไม่ได้เป็นที่ชื่นชอบมากนักตามคำถามบางอย่างใน StackExchange เช่นเดียวกับโพสต์เช่น: http://damienkatz.net/2004/08/why-c-sucks.html http://blogs.kde.org/ node / 2298 http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/ เป็นต้น (หมายเหตุ: ไม่ใช่ความคิดเห็นของฉันที่ C ++ เป็นภาษาที่ไม่ดีจริง ๆ แล้วมันเป็นภาษาหลักที่ฉันใช้อย่างไรก็ตามอินเทอร์เน็ตเช่นเดียวกับอาจารย์บางคนทำให้ฉันรู้สึกว่ามันไม่ใช่ภาษาที่นิยมใช้กันอย่างแพร่หลาย อาจารย์คนหนึ่งของฉันใช้ภาษา C ++ ตลอดเวลา แต่มันก็ยังเป็นภาษาเริ่มต้นที่วิทยาลัยของฉัน!) เมื่อพิจารณาแล้วทำไมภาษานี้จึงเป็นภาษาแรกที่สอนในโรงเรียนหลายแห่ง อะไรคือสาเหตุของการเริ่มหลักสูตรการเขียนโปรแกรมด้วย C …
12 c++ 

9
การรับมรดกผิดไป
ฉันมีรหัสบางส่วนที่โมเดลการสืบทอดที่ดีลงไปและฉันพยายามเข้าใจว่าทำไมและวิธีการแก้ไข โดยพื้นฐานแล้วจินตนาการว่าคุณมีลำดับชั้นของ Zoo ด้วย: class Animal class Parrot : Animal class Elephant : Animal class Cow : Animal เป็นต้น คุณมีวิธีกิน (), รัน (), ฯลฯ และทุกอย่างดี วันหนึ่งมีคนเข้ามาและพูดว่า - คลาส CageBuilder ของเราทำงานได้ดีและใช้ animal.weight () และ animal.height () ยกเว้น African Bison ใหม่ที่แข็งแรงเกินไปและสามารถทุบกำแพงได้ดังนั้นฉันจะเพิ่ม อีกคุณสมบัติหนึ่งของคลาส Animal - isAfricanBizon () และใช้สิ่งนั้นเมื่อเลือกวัสดุและแทนที่มันสำหรับคลาส AfricanBizon เท่านั้น บุคคลต่อไปมาและทำสิ่งที่คล้ายกันและสิ่งต่อไปที่คุณรู้ว่าคุณมีคุณสมบัติเหล่านี้ทั้งหมดสำหรับชุดย่อยของลำดับชั้นในคลาสพื้นฐาน เป็นวิธีที่ดีในการปรับปรุง / …

2
การทำความเข้าใจย้อนรอยใน C ++
ฉันมีความเข้าใจพื้นฐานที่ดีเกี่ยวกับพื้นฐานของ C ++ ฉันยังมีความเข้าใจว่าการเรียกซ้ำใช้งานอย่างไร ฉันเจอปัญหาบางอย่างเช่นปัญหาแปดคลาสสิกและแก้ปัญหา Sudoku ด้วย Backtracking ฉันรู้ว่าฉันค่อนข้างหลงทางเมื่อพูดถึงเรื่องนี้ฉันไม่สามารถเข้าใจแนวคิดของการย้อนกลับไปในกองการเรียกซ้ำและเริ่มต้นอีกครั้งเพื่อแก้ไขปัญหา มันดูง่ายด้วยปากกาและกระดาษ แต่เมื่อพูดถึงการเขียนโค้ดสำหรับเรื่องนี้ฉันก็สับสนว่าจะเริ่มโจมตีปัญหาเหล่านี้อย่างไร มันจะมีประโยชน์ถ้ามีบทช่วยสอนที่มุ่งเป้าไปที่ผู้เริ่มต้นเพื่อย้อนรอยหรือถ้ามีหนังสือที่ดีที่หนังสือเล่มนี้ถูกปกคลุม หากใครบางคนสามารถทำให้กระจ่างในหัวข้อนี้หรือให้ลิงก์ไปยังการอ้างอิงที่เหมาะสมฉันจะขอบคุณจริงๆ และใช่ฉันรู้ว่ามันจะง่ายขึ้นในภาษาที่ใช้งานได้ แต่ฉันต้องการที่จะเข้าใจการใช้งานในภาษาที่จำเป็นด้วย
12 c++  recursion 

9
หลีกเลี่ยงข้อผิดพลาดที่มุ่งเน้นวัตถุย้ายจาก C ทำงานอะไรให้คุณ
ฉันได้เขียนโปรแกรมในภาษาเชิงปฏิบัติมาระยะหนึ่งแล้วและปฏิกิริยาแรกของฉันต่อปัญหาคือการเริ่มแบ่งมันเป็นงานเพื่อดำเนินการแทนที่จะพิจารณาหน่วยงานต่าง ๆ (วัตถุ) ที่มีอยู่และความสัมพันธ์ของพวกเขา ฉันมีหลักสูตรมหาวิทยาลัยใน OOP และเข้าใจพื้นฐานของการห่อหุ้มข้อมูลที่เป็นนามธรรมข้อมูลที่หลากหลายรูปแบบโมดูลย่อยและมรดก ผมอ่าน/programming/2688910/learning-to-think-in-the-object-oriented-wayและ/programming/1157847/learning-object-oriented-thinking , และจะดูหนังสือบางเล่มที่ชี้ไปยังคำตอบเหล่านั้น ฉันคิดว่าโครงการขนาดกลางถึงขนาดใหญ่หลายแห่งของฉันจะได้รับประโยชน์จากการใช้ OOP อย่างมีประสิทธิภาพ แต่ในฐานะมือใหม่ฉันต้องการหลีกเลี่ยงข้อผิดพลาดที่ใช้เวลานานและเสียเวลา จากประสบการณ์ของคุณข้อผิดพลาดเหล่านี้คืออะไรและมีวิธีการที่เหมาะสมรอบตัวพวกเขาอย่างไร หากคุณสามารถอธิบายได้ว่าทำไมพวกเขาถึงเป็นข้อผิดพลาดและวิธีที่ข้อเสนอแนะของคุณมีประสิทธิภาพในการจัดการกับปัญหานั้นจะได้รับการชื่นชม ฉันกำลังคิดตามแนวของบางอย่างเช่น "เป็นเรื่องปกติหรือไม่ที่จะมีผู้สังเกตการณ์และวิธีการปรับเปลี่ยนจำนวนพอสมควรและใช้ตัวแปรส่วนตัวหรือมีเทคนิคสำหรับการรวม / ลดพวกมัน?" ฉันไม่กังวลเกี่ยวกับการใช้ C ++ เป็นภาษา OO บริสุทธิ์หากมีเหตุผลที่ดีในการผสมวิธีการ (เตือนความจำถึงเหตุผลในการใช้ GOTO แม้ว่าจะ จำกัด อยู่เพียงเล็กน้อย) ขอบคุณ!

4
หลีกเลี่ยงการมีวิธีการเริ่มต้น
ฉันมีรหัสที่มีอยู่นี้ซึ่งพวกเขามีชั้นเรียนและวิธีการเริ่มต้นในชั้นเรียนนั้น คาดว่าเมื่อวัตถุของคลาสถูกสร้างขึ้นพวกเขาจำเป็นต้องเรียกใช้การเตรียมใช้งานกับมัน เหตุผลทำไมมีวิธีการเตรียมใช้งาน วัตถุที่ถูกสร้างขึ้นก่อนที่จะมีขอบเขตทั่วโลกและจากนั้นวิธีการเริ่มต้นได้รับการเรียกในภายหลังหลังจากโหลด dll ซึ่งมันขึ้นอยู่กับ ปัญหาเกี่ยวกับการเริ่มต้น คลาสตอนนี้มีบูล isInitialized ซึ่งจำเป็นต้องตรวจสอบในทุกวิธีก่อนที่จะดำเนินการและส่งกลับข้อผิดพลาดหากไม่ได้เริ่มต้น พูดง่ายๆคือมันเป็นความเจ็บปวดครั้งใหญ่ ทางออกหนึ่งที่เป็นไปได้ เริ่มต้นในตัวสร้าง มีเพียงตัวชี้ไปยังวัตถุในขอบเขตส่วนกลาง สร้างวัตถุจริงหลังจากที่โหลด dll ปัญหาเกี่ยวกับการแก้ปัญหาข้างต้น ทุกคนที่สร้างวัตถุของคลาสนี้จำเป็นต้องรู้ว่ามันจะต้องมีการสร้างหลังจากโหลด dll หรือมิฉะนั้นมันจะล้มเหลว เป็นที่ยอมรับหรือไม่?

4
วิธีจัดระเบียบอินเทอร์เฟซและการนำไปใช้ใน C ++
ฉันได้เห็นว่ามีกระบวนทัศน์ที่แตกต่างกันใน C ++ เกี่ยวกับสิ่งที่จะเข้าไปในไฟล์ส่วนหัวและสิ่งที่จะ cpp ไฟล์ AFAIK ผู้คนส่วนใหญ่โดยเฉพาะผู้ที่อยู่ในพื้นหลัง C ทำ: foo.h class foo { private: int mem; int bar(); public: foo(); foo(const foo&); foo& operator=(foo); ~foo(); } foo.cpp #include foo.h foo::bar() { return mem; } foo::foo() { mem = 42; } foo::foo(const foo& f) { mem = f.mem; } foo::operator=(foo …

12
C ++ ไม่เหมาะสำหรับ OOP หรือไม่ [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันอ่านหนึ่งในคำตอบของคำถามที่นี่ (จำไม่ได้ว่า) C ++ ไม่เหมาะสำหรับการเขียนโปรแกรมเชิงวัตถุ มีบางคนพูดถึงว่าคุณสามารถใช้ประโยชน์จากคุณลักษณะหรืออะไรทำนองนั้น แต่ไม่ได้อยู่ในความหมายของ OOP อย่างแท้จริง (ฉันจริง ๆ ไม่เข้าใจว่าบุคคลนั้นหมายถึงอะไร) มีความจริงในเรื่องนี้บ้างไหม? ถ้าเป็นเช่นนั้นทำไม

2
ซ้อนห้องสมุดคงที่เป็นไปได้?
ฉันกำลังทำงานใน QT ไลบรารีแบบสแตติกสามารถขึ้นอยู่กับไลบรารีแบบสแตติกอื่นได้หรือไม่ (Static Lib ถูกสร้างโดยการเชื่อมโยงแบบสแตติกแบบอื่น) ถ้าใช่เป็นไปได้ไหมว่าหลังจากเชื่อมโยงไปยัง lib2 แล้ว lib ที่สร้างขึ้น (lib1) จะไม่ประกอบด้วยรหัสทั้งหมดของ lib2 หรือไม่ ในโครงการ Qt ของฉันฉันใช้ไลบรารีแบบสแตติกซึ่งขึ้นอยู่กับหลายไลบรารี ฉันต้องเพิ่มไลบรารีทั้งหมด (โดยมีส่วนหัวทั้งหมดในโครงการของฉัน) แม้ว่าฉันต้องการเพียงหนึ่ง lib (และหนึ่ง .h ของคลาสนั้น) ในรหัสของฉัน กรุณาอธิบายสถานการณ์
12 c++  qt  static-linking 

2
อาจเริ่มต้นตัวแปร / สมาชิกด้วยปริศนาขีดเส้นใต้คอมไพเลอร์?
ฉันได้รับการสอนมาตั้งแต่มัธยมซึ่งกำหนดตัวแปรเช่นนี้: int _a; หรือ int __a; ควรพิจารณาการปฏิบัติที่ไม่ดีเพราะในที่สุดนี้จะไขปริศนาคอมไพเลอร์ที่ใช้ตัวแปรที่เริ่มต้นด้วยการขีดเส้นใต้เพื่อตั้งชื่อตัวแปรชั่วคราว เท่าที่ฉันรู้ว่านี่คือเหตุผลว่าทำไมบางคนชอบที่จะย้ายขีดเส้นใต้ในตอนท้ายของชื่อเช่น: int a_; อย่างไรก็ตามฉันเห็นโค้ดจำนวนมากรอบตัวที่ใช้ประโยชน์จากตัวแปรเริ่มต้นขีดล่าง และรหัสนั้นสร้างค่อนข้างดีทั้ง Visual Studio 2010 และ g ++ 4.x ดังนั้นฉันจึงสงสัยว่า: นี่ไม่ใช่ปัญหาทุกวันนี้หรือไม่? คอมไพเลอร์สมัยใหม่ฉลาดกว่าเกี่ยวกับการตั้งชื่อการประชุมหรือไม่?

8
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะรวม enums ทั้งหมดไว้ในไฟล์เดียวและใช้มันในหลาย ๆ คลาส?
ฉันเป็นนักพัฒนาเกมที่ต้องการฉันทำงานกับเกมอินดี้เป็นครั้งคราวและในขณะที่ฉันได้ทำบางสิ่งบางอย่างซึ่งดูเหมือนเป็นการปฏิบัติที่ไม่ดีในตอนแรก แต่ฉันต้องการคำตอบจากโปรแกรมเมอร์ที่มีประสบการณ์บางคนที่นี่ สมมติว่าฉันมีไฟล์ชื่อenumList.hฉันประกาศทั้งหมด enums ที่ฉันต้องการใช้ในเกมของฉัน: // enumList.h enum materials_t { WOOD, STONE, ETC }; enum entity_t { PLAYER, MONSTER }; enum map_t { 2D, 3D }; // and so on. // Tile.h #include "enumList.h" #include <vector> class tile { // stuff }; แนวคิดหลักคือฉันประกาศ enums ทั้งหมดในเกมใน1 ไฟล์แล้วนำเข้าไฟล์นั้นเมื่อฉันต้องการใช้ enum ที่แน่นอนจากมันแทนที่จะประกาศในไฟล์ที่ฉันต้องการใช้ ฉันทำเช่นนี้เพราะทำให้ทุกสิ่งสะอาดฉันสามารถเข้าถึง enum …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.