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

C ++ เป็นภาษาโปรแกรมทั่วไป เดิมได้รับการออกแบบให้เป็นส่วนขยายของ C และมีไวยากรณ์ที่คล้ายกัน แต่ตอนนี้มันเป็นภาษาที่แตกต่างอย่างสิ้นเชิง ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัส (จะ) คอมไพล์ด้วยคอมไพเลอร์ C ++ ใช้แท็กเฉพาะรุ่นสำหรับคำถามที่เกี่ยวข้องกับการแก้ไขมาตรฐานเฉพาะ [C ++ 11], [C ++ 14], [C ++ 17] หรือ [C ++ 20] เป็นต้น

7
หมายเลขอ้างอิงใน C ++ คืออะไร?
ฉันได้รับแจ้งว่าแฮนเดิลเป็นประเภทของตัวชี้ แต่ไม่ใช่และช่วยให้คุณสามารถอ้างอิงถึงอ็อบเจ็กต์แทนที่จะเป็นอ็อบเจ็กต์เอง คำอธิบายที่ละเอียดกว่านี้คืออะไร?
98 c++  handle 

5
ความแตกต่างระหว่าง std :: system_clock และ std :: steady_clock?
อะไรคือความแตกต่างระหว่างstd::system_clockและstd::steady_clock? (กรณีตัวอย่างที่แสดงผลลัพธ์ / พฤติกรรมที่แตกต่างกันจะดีมาก) ถ้าเป้าหมายของฉันคือการได้อย่างแม่นยำวัดเวลาการดำเนินการของฟังก์ชั่น (เช่นมาตรฐาน) สิ่งที่จะเป็นทางเลือกที่ดีที่สุดระหว่างstd::system_clock, std::steady_clockและstd::high_resolution_clock?
98 c++  c++11  timer  chrono 

4
การใช้ตัวดำเนินการเปรียบเทียบผ่าน 'tuple' และ 'tie' เป็นความคิดที่ดีหรือไม่?
(หมายเหตุ: tupleและtieสามารถนำมาจาก Boost หรือ C ++ 11) เมื่อเขียนโครงสร้างขนาดเล็กที่มีเพียงสององค์ประกอบบางครั้งฉันมักจะเลือก a std::pairเนื่องจากมีการทำสิ่งสำคัญทั้งหมดสำหรับประเภทข้อมูลนั้นแล้วเช่นoperator<การจัดลำดับที่เข้มงวด - อ่อนแอ . ข้อเสียคือชื่อตัวแปรที่ค่อนข้างไร้ประโยชน์ แม้ว่าฉันจะสร้างสิ่งนั้นขึ้นมาเองtypedefแต่ฉันก็จำไม่ได้ว่า 2 วันต่อมาว่าfirstอะไรsecondคืออะไรโดยเฉพาะอย่างยิ่งถ้าทั้งสองเป็นประเภทเดียวกัน สิ่งนี้จะแย่ลงไปอีกสำหรับสมาชิกมากกว่าสองคนเนื่องจากการทำรังนั้นpairค่อนข้างแย่มาก อีกทางเลือกหนึ่งคือไฟล์tupleไม่ว่าจะจาก Boost หรือ C ++ 11 แต่ก็ไม่ได้ดูดีและชัดเจนขึ้น ดังนั้นฉันจึงกลับไปเขียนโครงสร้างด้วยตัวเองรวมถึงตัวดำเนินการเปรียบเทียบที่จำเป็น เนื่องจากโดยเฉพาะอย่างยิ่งoperator<อาจเป็นเรื่องยุ่งยากฉันจึงคิดที่จะหลีกเลี่ยงความยุ่งเหยิงทั้งหมดนี้โดยอาศัยการดำเนินการที่กำหนดไว้สำหรับtuple: ตัวอย่างoperator<เช่นสำหรับการสั่งซื้อที่เข้มงวด - อ่อนแอ: bool operator<(MyStruct const& lhs, MyStruct const& rhs){ return std::tie(lhs.one_member, lhs.another, lhs.yet_more) < std::tie(rhs.one_member, rhs.another, rhs.yet_more); } ( tieทำให้tupleของT&การอ้างอิงจากการขัดแย้งผ่าน.) แก้ไข : …

28
โปรแกรมจะขัดข้องเมื่อสร้างรุ่นเท่านั้น - จะแก้ไขข้อบกพร่องได้อย่างไร
ฉันมีปัญหาประเภท "Schroedinger's Cat" ที่นี่ - โปรแกรมของฉัน (จริงๆแล้วเป็นชุดทดสอบสำหรับโปรแกรมของฉัน แต่โปรแกรมของฉัน) ขัดข้อง แต่เฉพาะเมื่อสร้างในโหมดรีลีสและเมื่อเรียกใช้จากบรรทัดคำสั่งเท่านั้น . ด้วยการดีบักของมนุษย์ถ้ำ (เช่นข้อความ printf () ที่น่ารังเกียจทั่วทุกที่) ฉันได้กำหนดวิธีการทดสอบที่โค้ดขัดข้องแม้ว่าจะเกิดข้อผิดพลาดจริงในตัวทำลายบางตัวเนื่องจากข้อความติดตามล่าสุดที่ฉันเห็นอยู่ใน ผู้ทำลายล้างอื่น ๆ ที่ดำเนินการอย่างหมดจด เมื่อฉันพยายามเรียกใช้โปรแกรมนี้ภายใน Visual Studio มันไม่ผิดพลาด เช่นเดียวกันเมื่อเปิดตัวจาก WinDbg.exe ข้อขัดข้องจะเกิดขึ้นเมื่อเรียกใช้งานจากบรรทัดคำสั่งเท่านั้น สิ่งนี้เกิดขึ้นภายใต้ Windows Vista btw และน่าเสียดายที่ฉันไม่สามารถเข้าถึงเครื่อง XP ได้ในขณะนี้เพื่อทดสอบ มันจะดีมากถ้าฉันสามารถให้ Windows พิมพ์สแต็กแทร็กหรืออย่างอื่นที่ไม่ใช่แค่การยุติโปรแกรมราวกับว่ามันออกอย่างหมดจด ใครมีคำแนะนำเกี่ยวกับวิธีการรับข้อมูลที่มีความหมายเพิ่มเติมที่นี่และหวังว่าจะแก้ไขข้อบกพร่องนี้ได้หรือไม่? แก้ไข: ปัญหาเกิดจากอาร์เรย์นอกขอบเขตซึ่งฉันอธิบายเพิ่มเติมในโพสต์นี้ ขอบคุณทุกคนสำหรับความช่วยเหลือในการค้นหาปัญหานี้!
98 c++  debugging 

4
ทดลอง :: ข้อผิดพลาดตัวเชื่อมโยงระบบไฟล์
ฉันพยายามใช้คุณสมบัติ c ++ 1z ใหม่ที่เป็นจริงในส่วนหัวของการพัฒนาภายใน gcc 6.0 ถ้าฉันลองตัวอย่างเล็กน้อยนี้: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit"; std::cout << "p1 = " << p1 << std::endl; } ฉันได้: / opt / linux-gnu_6-20151011 / bin / g ++ --std = c ++ 1z main.cpp -O2 …
98 c++  gcc  c++17 



2
Qt c ++ aggregate 'std :: stringstream ss' มีประเภทที่ไม่สมบูรณ์และไม่สามารถกำหนดได้
ฉันมีฟังก์ชันนี้ในโปรแกรมของฉันที่แปลงจำนวนเต็มเป็นสตริง: QString Stats_Manager::convertInt(int num) { stringstream ss; ss << num; return ss.str(); } แต่เมื่อใดที่ฉันเรียกใช้สิ่งนี้ฉันได้รับข้อผิดพลาด: aggregate 'std::stringstream ss' has incomplete type and cannot be defined ฉันไม่แน่ใจจริงๆว่ามันหมายถึงอะไร แต่ถ้าคุณรู้วิธีแก้ไขหรือต้องการรหัสเพิ่มเติมโปรดแสดงความคิดเห็น ขอบคุณ.
98 c++  string  qt  stringstream 

2
วิธีรับขนาดไฟล์เป็นไบต์ด้วย C ++ 17
มีข้อผิดพลาดสำหรับระบบปฏิบัติการเฉพาะที่ฉันควรรู้หรือไม่? คำถามนี้มีคำซ้ำหลายรายการ ( 1 , 2 , 3 , 4 , 5 ) แต่ได้รับคำตอบเมื่อหลายสิบปีก่อน คำตอบที่ได้รับการโหวตสูงมากในหลายคำถามเหล่านี้ผิดในปัจจุบัน วิธีการจากอื่น ๆ (QA เก่า) บน. sx stat.h (wrapper sprintstatf ) ใช้ syscall tellg ()ผลตอบแทนต่อความหมายตำแหน่งแต่ไม่จำเป็นต้องไบต์ intประเภทผลตอบแทนไม่ได้

1
การเริ่มต้นสมาชิกขณะใช้ตัวสร้างที่ได้รับมอบหมาย
ฉันได้เริ่มลองใช้มาตรฐาน C ++ 11 แล้วและฉันพบคำถามนี้ซึ่งอธิบายถึงวิธีการเรียก ctor ของคุณจาก ctor อื่นในคลาสเดียวกันเพื่อหลีกเลี่ยงการมีวิธีการเริ่มต้นหรือสิ่งที่คล้ายกัน ตอนนี้ฉันกำลังลองสิ่งเดียวกันกับรหัสที่มีลักษณะดังนี้: hpp: class Tokenizer { public: Tokenizer(); Tokenizer(std::stringstream *lines); virtual ~Tokenizer() {}; private: std::stringstream *lines; }; cpp: Tokenizer::Tokenizer() : expected('=') { } Tokenizer::Tokenizer(std::stringstream *lines) : Tokenizer(), lines(lines) { } แต่นี่ทำให้ฉันเกิดข้อผิดพลาด: In constructor ‘config::Tokenizer::Tokenizer(std::stringstream*)’: /path/Tokenizer.cpp:14:20: error: mem-initializer for ‘config::Tokenizer::lines’ follows constructor delegationฉันได้ลองย้ายส่วน …

8
อะไรคือความแตกต่างระหว่างคอนเทนเนอร์ deque และ list STL?
อะไรคือความแตกต่างระหว่างทั้งสอง? ฉันหมายถึงวิธีการทั้งหมดเหมือนกัน ดังนั้นสำหรับผู้ใช้พวกเขาทำงานเหมือนกัน ถูกต้องหรือไม่ ??
98 c++  list  stl  deque 

2
std :: back_inserter สำหรับ std :: set?
ฉันเดาว่านี่เป็นคำถามง่ายๆ ฉันต้องทำสิ่งนี้: std::set<int> s1, s2; s1 = getAnExcitingSet(); std::transform(s1.begin(), s1.end(), std::back_inserter(s2), ExcitingUnaryFunctor()); แน่นอนไม่ทำงานเนื่องจากไม่มี std::back_inserter ยังต้องการตัววนซ้ำ? ฉันไม่ได้ใช้ดังนั้นฉันไม่แน่ใจว่าจะทำอย่างไรpush_backstd::inserterstd::inserter ใครมีความคิด? แน่นอนตัวเลือกอื่นของฉันคือใช้เวกเตอร์สำหรับs2แล้วเรียงลำดับในภายหลัง อาจจะดีกว่านี้?
98 c++  algorithm  stl 

4
ฉันควรใส่ส่วนหัวใดสำหรับ "size_t"
ตามที่cppreference.com size_tกำหนดไว้ในหลายส่วนหัว ได้แก่ <cstddef> <cstdio> <cstring> <ctime> และตั้งแต่ C ++ 11 ก็เช่นกัน <cstdlib> <cwchar> ก่อนอื่นฉันสงสัยว่าทำไมถึงเป็นเช่นนี้ สิ่งนี้ไม่ขัดกับหลักการDRYหรือไม่? อย่างไรก็ตามคำถามของฉันคือ: ซึ่งหนึ่งในหัวข้างต้นที่ผมควรจะรวมถึงการใช้งานsize_t? มันสำคัญหรือไม่?
98 c++  typedef 

6
วิธีที่ทันสมัยในการกรอง STL container?
กลับมาที่ C ++ หลังจากหลายปีของ C # ฉันสงสัยว่าสิ่งที่ทันสมัย ​​- อ่าน: C ++ 11 - วิธีการกรองอาร์เรย์จะเป็นอย่างไรเช่นเราจะบรรลุสิ่งที่คล้ายกับแบบสอบถาม Linq นี้ได้อย่างไร: var filteredElements = elements.Where(elm => elm.filterProperty == true); เพื่อกรองเวกเตอร์ขององค์ประกอบ ( stringsสำหรับคำถามนี้)? ฉันหวังเป็นอย่างยิ่งว่าอัลกอริทึมสไตล์ STL แบบเก่า (หรือแม้กระทั่งส่วนขยายเช่นboost::filter_iterator) ที่ต้องการกำหนดวิธีการที่ชัดเจนจะถูกแทนที่ด้วยในตอนนี้?
98 c++  c++11  stl 

9
หา Dumpbin.exe ไม่เจอ
ฉันไม่เห็น dumpbin.exe ในระบบของฉัน ฉันมี Visual Studio 2005 ในระบบของฉัน เมื่อฉันพิมพ์ dumpbin ในบรรทัดคำสั่งจะมีคำสั่งที่ไม่รู้จัก มันมาพร้อมกับ Visual Studio โดยค่าเริ่มต้นหรือฉันต้องเพิ่มเครื่องมือนี้อย่างชัดเจน?

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