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

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

6
เป็นไปได้ไหมที่จะใช้ C ++ กับ. NET Framework
ฉันได้อ่านความคิดเห็นมากมายเกี่ยวกับการเขียนโปรแกรม GUI ทั้งใน C # และ C ++ และฉันสังเกตเห็นว่า. NET Framework ของ Microsoft นั้นทรงพลังสำหรับการเขียนโปรแกรม GUI เป็นไปได้ไหมที่จะใช้ C ++ และ. NET Framework ฉันคิดว่ามันจะเป็นการผสมผสานที่ยอดเยี่ยมเนื่องจาก C ++ เป็นภาษาที่ทรงพลังและ .NET Framework เป็นที่ต้องการสำหรับการเขียนโปรแกรม GUI บน Windows อย่างที่ฉันได้อ่าน เป็นไปได้ที่จะเขียน GUI ใน C # และฟังก์ชั่นใน C ++ หรือไม่?
18 c++  .net 

4
การเขียน lexer ใน C ++
แหล่งข้อมูลที่ดีในการเขียน lexer ใน C ++ คืออะไร (หนังสือบทเรียนแบบฝึกหัดเอกสาร) เทคนิคและวิธีปฏิบัติที่ดีมีอะไรบ้าง ฉันดูบนอินเทอร์เน็ตและทุกคนบอกว่าจะใช้ตัวสร้าง lexer เช่น lex ฉันไม่ต้องการทำอย่างนั้นฉันต้องการเขียน lexer ด้วยมือ
18 c++  compiler  lexer 

3
รหัสทดสอบการจัดส่ง ทำไมคุณไม่
ฉันต้องการส่งรหัสทดสอบพร้อมกับผลิตภัณฑ์ โดยเฉพาะให้ตัวเลือกเพื่อให้ทุกคนที่มีสำเนาของโปรแกรมของเราสามารถกดปุ่ม "ทดสอบตัวเอง" หรือผ่าน - ทดสอบตัวเองในบรรทัดคำสั่งและเรียกใช้ผ่านชุดที่สมบูรณ์ของหน่วย | การทดสอบแบบรวม ฉันต้องการทำสิ่งนี้เป็นส่วนใหญ่เพื่อช่วยแก้ไขปัญหาที่พบในเขตข้อมูลดังนั้นเมื่อรายงานข้อผิดพลาดได้รับจากผู้ใช้ปลายทางมีโอกาสที่จะได้รับการสนับสนุนจาก "และการทดสอบทั้งสามนี้ล้มเหลวในเครื่องของฉัน" ฉันต้องการให้ผู้ทดสอบด้วยตนเองสามารถเรียกใช้หน่วย | รวมการทดสอบเช่นกัน อย่างไรก็ตามการทดสอบของทีมเชื่อว่ารหัสทดสอบไม่ใช่รหัสการผลิตและดังนั้นจะไม่ถูกจัดส่ง ฉันไม่ได้รับเรื่องนี้จริง ๆ เนื่องจากโครงการโอเพ่นซอร์สส่วนใหญ่จะจัดส่งชุดทดสอบ มันดูเหมือนจะผิดปกติในซอฟต์แวร์ปิด ฉันต้องการหลักฐานสนับสนุนหรือเกร็ดเล็กเกร็ดน้อยทั้งสองด้านของการโต้แย้ง ฉันคาดเดาได้ดีที่สุดว่าไซต์แลกเปลี่ยนสแต็คใดที่เหมาะสมที่สุด แต่โปรดแจ้งให้เราทราบว่าสิ่งนี้อยู่นอกสถานที่หรือไม่

5
enums สร้างส่วนต่อประสานที่บอบบางหรือไม่?
ลองพิจารณาตัวอย่างด้านล่าง การเปลี่ยนแปลงใด ๆ กับ ColorChoice enum จะส่งผลกระทบต่อคลาสย่อย IWindowColor ทั้งหมด enums มีแนวโน้มที่จะทำให้เกิดการเชื่อมต่อที่เปราะหรือไม่? มีอะไรดีไปกว่า Enum ที่จะยอมให้มีความยืดหยุ่นแบบ polymorphic มากขึ้นหรือไม่? enum class ColorChoice { Blue = 0, Red = 1 }; class IWindowColor { public: ColorChoice getColor() const=0; void setColor( const ColorChoice value )=0; }; แก้ไข: ขออภัยที่ใช้สีเป็นตัวอย่างของฉันนั่นไม่ใช่สิ่งที่เป็นคำถาม นี่คือตัวอย่างอื่นที่หลีกเลี่ยงปลาเฮอริ่งแดงและให้ข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่ฉันหมายถึงโดยความยืดหยุ่น enum class CharacterType { orc = …

2
ในการเรียงตัวอักษรสตริงที่อยู่ติดกัน
C และ C ++ รวบรวมตัวอักษรสตริงที่อยู่ติดกันเป็นตัวอักษรสตริงเดียว ตัวอย่างเช่นนี้ "Some text..." "and more text" เทียบเท่ากับ: "Some text...and more text" ในภาษาตระกูล C อื่น ๆ เช่น C # หรือ Java นี่เป็นข้อผิดพลาดทางไวยากรณ์ (ซึ่งก็ดีมาก BTW) เหตุผล / เหตุผลทางประวัติศาสตร์สำหรับ C และ C ++ คืออะไร

4
ข้อใดต่อไปนี้เกี่ยวกับฟังก์ชั่นที่ไม่ถูกต้อง
ดังนั้นในขณะที่ฉันทำการคอมไพล์ที่มีความยาวฉันตัดสินใจที่จะทำการทดสอบทั่วไป C ++ บน ODesk และเจอคำถามนี้ ถ้าฉันไม่ผิดให้ถ้อยคำ (หรือขาดมัน) สิ่งเหล่านี้อาจเป็นจริง a. int Foo() { } int Foo(int bar) { } ข ดีreturn void;จะไม่ถูกต้องความหมาย แต่ฟังก์ชั่นอย่างเห็นได้ชัดสามารถมีvoidประเภทผลตอบแทน void Foo() { } ค. นี่คือนิยามของฟังก์ชั่นอินไลน์ใช่ d โดยไม่ต้องลงรายละเอียดมากเกี่ยวกับการจัดวางองค์ประกอบต่อไปนี้ typedef void (*Func)(int); Func functions[2]; void Foo(int bar) { } void Bar(int foo) { } functions[0] = &Foo; functions[1] …
17 c++ 

4
ปัญหาของการนำ C ++ เหมือน const เป็นภาษามีอะไรบ้าง
ฉันสนใจในความคิดของ C ++ - constไม่ใช่การประหารแบบconstนั้น ยกตัวอย่าง C # - มันไม่มี C ++ - เหมือน const และเหตุผลที่เป็นปกติ - ผู้คนและเวลา ที่นี่นอกจากนี้ดูเหมือนว่าทีม C # ดูการดำเนินการ C ++ ของconstการตลาด CLR และมีเพียงพอที่จุดนี้ (ดูว่าทำไมไม่มีวิธีสมาชิก const ใน c # และพารามิเตอร์ const ; ขอบคุณ Svick) ถ้าเราก้าวไปไกลกว่านั้นมีอะไรอีกไหม? มีอะไรที่ลึกกว่านี้ไหม? ยกตัวอย่างเช่นการสืบทอดหลาย ๆ อย่างซึ่งมักจะยากที่จะเข้าใจ (สำหรับผู้ใช้) และดังนั้นจึงไม่ได้เพิ่มในภาษา (เช่นปัญหาเพชร) เป็นสิ่งที่มีอยู่ในธรรมชาติของconstที่ก่อให้เกิดปัญหาว่ามันจะดีกว่าสำหรับภาษาที่จะหลีกเลี่ยงมันได้หรือไม่ สิ่งที่ต้องการตัดสินใจว่าconstควรจะลึกหรือตื้น (มีconstคอนเทนเนอร์หมายความว่าฉันไม่สามารถเพิ่มองค์ประกอบใหม่หรือแก้ไของค์ประกอบที่มีอยู่เช่นกันถ้าองค์ประกอบเป็นประเภทอ้างอิง) ปรับปรุง : …

5
มันสมเหตุสมผลไหมที่จะใช้อ็อบเจกต์ (แทนที่จะเป็นชนิดดั้งเดิม) สำหรับทุกสิ่งใน C ++?
ในช่วงโปรเจ็กต์ล่าสุดที่ฉันทำงานอยู่ฉันต้องใช้ฟังก์ชั่นมากมายเช่นนี้: static bool getGPS(double plane_latitude, double plane_longitude, double plane_altitude, double plane_roll, double plane_pitch, double plane_heading, double gimbal_roll, double gimbal_pitch, double gimbal_yaw, int target_x, int target_y, double zoom, int image_width_pixels, int image_height_pixels, double & Target_Latitude, double & Target_Longitude, double & Target_Height); ดังนั้นฉันต้องการ refactor เพื่อให้มีลักษณะเช่นนี้: static GPSCoordinate getGPS(GPSCoordinate plane, Angle3D planeAngle, Angle3D …

3
คุณจะทดสอบหน่วยหรือทำการทดสอบอัตโนมัติที่มีประสิทธิภาพมากที่สุดในรหัสกราฟิกสำหรับ OpenGL อย่างไร
ฉันกำลังเขียนเกมและเอ็นจิ้นกราฟิคประกอบบน OpenGL ใน C ++ ฉันยังเป็นแฟนของกระบวนการเข้ารหัสที่ดีและการทดสอบอัตโนมัติ การทดสอบรหัสกราฟฟิก + นั้นดูเหมือนจะไม่สามารถเปลี่ยนแปลงได้เนื่องจากผลลัพธ์มักจะเป็นเพียงการแสดงผลเท่านั้น ตัวอย่างเช่นลองนึกภาพการวิเคราะห์สตรีมรูปภาพดิบที่เรนเดอร์ไปที่หน้าจอไบต์ต่อไบต์ - คุณต้องทดสอบข้อมูลเพื่อเปรียบเทียบกับซึ่งยากที่จะสร้าง / รับและบ่อยครั้งที่รูปภาพที่แสดงไม่เหมือนกันใน ระดับไบต์เมื่อทำงานในเวลาที่ต่างกัน - การเปลี่ยนแปลงเล็กน้อยในอัลกอริทึมจะทำลายวิธีการนี้อย่างสมบูรณ์ ฉันกำลังคิดที่จะสร้างชุดทดสอบแบบเห็นภาพซึ่งโดยทั่วไปฉันสามารถสร้างฉากทดสอบที่แตกต่างกันแสดงสิ่งต่าง ๆ เช่นการทำแผนที่เงาภาพเคลื่อนไหว ฯลฯ ฯลฯ โดยเป็นส่วนหนึ่งของ CI ฉากเหล่านี้จะถูกแสดงเป็นวิดีโอ ไฟล์ (หรืออาจปล่อยไว้เป็นไฟล์ที่เรียกทำงานได้) ที่มีเมทริกต่างกัน สิ่งนี้จะยังคงต้องการการตรวจสอบไฟล์วิดีโอด้วยตนเอง แต่อย่างน้อยที่สุดมันก็ค่อนข้างอัตโนมัติและเป็นมาตรฐาน คุณคิดอย่างไร? ฉันหวังว่าจะมีวิธีที่ดีกว่า

4
แรงจูงใจและการใช้ตัวสร้างการย้ายใน C ++
เมื่อเร็ว ๆ นี้ฉันได้อ่านเกี่ยวกับตัวสร้างการย้ายใน C ++ (ดูตัวอย่างที่นี่ ) และฉันพยายามที่จะเข้าใจวิธีการทำงานและเวลาที่ฉันควรใช้พวกเขา เท่าที่ฉันเข้าใจตัวสร้างการย้ายถูกใช้เพื่อบรรเทาปัญหาประสิทธิภาพที่เกิดจากการคัดลอกวัตถุขนาดใหญ่ หน้าวิกิพีเดียกล่าวว่า: "ปัญหาประสิทธิภาพการทำงานเรื้อรังกับ C ++ 03 คือสำเนาที่มีราคาแพงและไม่จำเป็นซึ่งสามารถเกิดขึ้นได้โดยปริยายเมื่อวัตถุถูกส่งผ่านตามค่า" ปกติฉันจะจัดการกับสถานการณ์เช่นนี้ โดยการส่งวัตถุโดยการอ้างอิงหรือ โดยการใช้ตัวชี้อัจฉริยะ (เช่น boost :: shared_ptr) เพื่อส่งผ่านวัตถุ (ตัวชี้อัจฉริยะจะถูกคัดลอกแทนวัตถุ) สถานการณ์ใดบ้างที่ทั้งสองเทคนิคข้างต้นไม่เพียงพอและการใช้ตัวสร้างการย้ายมีความสะดวกมากขึ้น?

4
ใช้ `use` ใน C ++ หรือหลีกเลี่ยง
การลดความหมายที่แตกต่างกันอย่างละเอียดเนื่องจาก ADL ฉันควรใช้โดยทั่วไปusingอย่างไรและเพราะเหตุใด มันขึ้นอยู่กับสถานการณ์ (เช่นส่วนหัวซึ่งจะเป็น#included กับไฟล์ต้นฉบับที่จะไม่)? นอกจากนี้ฉันควรจะชอบ::std::หรือstd::? ระดับเนมสเปซusing namespace: using namespace std; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } ชัดเจนอย่างสมบูรณ์: std::pair<std::string::const_iterator, std::string::const_iterator> f(const std::string &s) { return std::make_pair(s.begin(), s.end()); } ระดับเนมสเปซโดยใช้การประกาศ: using std::pair; using std::string; pair<string::const_iterator, string::const_iterator> f(const string &s) { return make_pair(s.begin(), s.end()); } ฟังก์ชั่นท้องถิ่นประกาศใช้: std::pair<std::string::const_iterator, …
17 c++  namespace 

4
เหตุใด C ++ มาตรฐานจึงไม่ใช้เทมเพลตนิพจน์
เป็นความเข้าใจของฉันหรือไม่ว่าเทมเพลตนิพจน์เป็นเทคนิคถูกค้นพบอย่างมีนัยสำคัญก่อนมาตรฐาน C ++ ดั้งเดิมในปี 1998 เหตุใดพวกเขาจึงไม่ใช้เพื่อปรับปรุงประสิทธิภาพของคลาสมาตรฐานเช่นstd::stringและสตรีม
17 c++  history 

13
การใช้ #define เหมาะสมเพื่อให้การพิมพ์รหัสซ้ำง่ายขึ้นหรือไม่
มีความเห็นว่าการใช้ #define เพื่อกำหนดรหัสเต็มบรรทัดสำหรับการทำให้โค้ดง่ายขึ้นหรือไม่นั้นเป็นวิธีปฏิบัติที่ดีหรือไม่ดี? ตัวอย่างเช่นหากฉันต้องการพิมพ์คำจำนวนมากด้วยกันฉันจะรู้สึกรำคาญเมื่อพิมพ์ << " " << เพื่อแทรกช่องว่างระหว่างคำในคำสั่ง cout ฉันทำได้ #define pSpace << " " << และประเภท cout << word1 pSpace word2 << endl; สำหรับฉันแล้วสิ่งนี้ไม่ได้เพิ่มหรือลบออกจากความชัดเจนของรหัสและทำให้การพิมพ์ง่ายขึ้นเล็กน้อย มีอีกหลายกรณีที่ฉันสามารถนึกถึงว่าการพิมพ์จะง่ายกว่าที่ไหนมากสำหรับการดีบัก ความคิดใด ๆ เกี่ยวกับเรื่องนี้? แก้ไข: ขอบคุณสำหรับคำตอบที่ยอดเยี่ยม! คำถามนี้เพิ่งมาถึงฉันหลังจากทำการพิมพ์ซ้ำ ๆ จำนวนมาก แต่ฉันไม่เคยคิดเลยว่าจะมีมาโครตัวอื่นที่ใช้สับสนน้อยกว่า สำหรับผู้ที่ไม่ต้องการอ่านคำตอบทั้งหมดทางเลือกที่ดีที่สุดคือการใช้มาโครของ IDE เพื่อลดการพิมพ์ซ้ำ

4
ส่งต่อการประกาศรวมถึง
Reduce the number of #include files in header files. It will reduce build times. Instead, put include files in source code files and use forward declarations in header files. ฉันอ่านมันที่นี่ http://www.yolinux.com/TUTORIALS/LinuxTutorialC++CodingStyle.html ดังนั้นมันบอกว่าถ้าคลาส (คลาส A) ในไฟล์ส่วนหัวไม่จำเป็นต้องใช้คำจำกัดความที่แท้จริงของบางคลาส (คลาส B) ในเวลานั้นเราสามารถใช้การประกาศไปข้างหน้าแทนการรวมไฟล์ส่วนหัว (คลาส B) โดยเฉพาะ คำถาม: ถ้าคลาส (คลาส A) ในส่วนหัวถ้าไม่ได้ใช้คำจำกัดความที่แท้จริงของคลาสเฉพาะ (คลาส B) ดังนั้นการประกาศล่วงหน้าจะช่วยลดเวลาในการคอมไพล์ได้อย่างไร
17 c++  coding-style 

3
GDB หยุดการดำเนินการชั่วคราวอย่างไร
อย่างที่คุณอาจทราบเราสามารถใช้ GDB และกำหนดจุดพักบนรหัสของเราเพื่อหยุดการประมวลผลชั่วคราวสำหรับการดีบัก คำถามของฉันคือ GDB หยุดกระบวนการอย่างไรและให้คุณดูเนื้อหาของการลงทะเบียนโดยใช้i rตัวอย่างเช่น การลงทะเบียนเหล่านั้นถูกใช้โดยกระบวนการ OS อื่น ๆ อย่างต่อเนื่องหรือ พวกเขาจะไม่ถูกเขียนทับได้อย่างไร? เป็นเพียงภาพรวมของเนื้อหาและไม่ใช่ข้อมูลจริง
16 c++  debugging 

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