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

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

9
แยกข้อความ OpenCV
ฉันพยายามค้นหากรอบข้อความในรูปภาพและขณะนี้ใช้วิธีนี้: // calculate the local variances of the grayscale image Mat t_mean, t_mean_2; Mat grayF; outImg_gray.convertTo(grayF, CV_32F); int winSize = 35; blur(grayF, t_mean, cv::Size(winSize,winSize)); blur(grayF.mul(grayF), t_mean_2, cv::Size(winSize,winSize)); Mat varMat = t_mean_2 - t_mean.mul(t_mean); varMat.convertTo(varMat, CV_8U); // threshold the high variance regions Mat varMatRegions = varMat > 100; เมื่อได้รับภาพเช่นนี้: จากนั้นเมื่อฉันแสดงvarMatRegionsฉันได้รับภาพนี้: ในขณะที่คุณเห็นมันค่อนข้างรวมบล็อกด้านซ้ายของข้อความกับส่วนหัวของการ์ดสำหรับการ์ดส่วนใหญ่วิธีนี้ใช้งานได้ดี …

3
การเริ่มต้นสมาชิกแบบคงที่ในเทมเพลตคลาส
ฉันต้องการทำสิ่งนี้: template <typename T> struct S { ... static double something_relevant = 1.5; }; แต่ฉันทำไม่ได้เนื่องจากsomething_relevantไม่ใช่ประเภทที่สมบูรณ์ มันไม่ได้ขึ้นอยู่กับแต่รหัสที่มีอยู่ขึ้นอยู่กับมันเป็นสมาชิกคงที่ของTS เนื่องจาก S เป็นแม่แบบฉันไม่สามารถใส่คำจำกัดความไว้ในไฟล์ที่คอมไพล์ได้ ฉันจะแก้ปัญหานี้ได้อย่างไร
148 c++  templates  static 

3
วิธีการตรวจสอบว่า std :: map มีรหัสโดยไม่ทำการแทรก?
วิธีเดียวที่ฉันได้ตรวจสอบการซ้ำคือการแทรกและตรวจสอบstd::pair.secondหาfalseแต่ปัญหาคือว่านี้ยังคงแทรกบางอย่างถ้าคีย์ไม่ได้ใช้ในขณะที่สิ่งที่ฉันต้องการคือmap.contains(key);ฟังก์ชั่น
148 c++  stl  map 

4
จะสร้างไลบรารีที่ใช้ร่วมกันด้วย cmake ได้อย่างไร?
ฉันได้เขียนไลบรารีที่ฉันเคยรวบรวมโดยใช้ Makefile ที่เขียนเอง แต่ตอนนี้ฉันต้องการเปลี่ยนไปใช้ cmake ต้นไม้มีลักษณะดังนี้ (ฉันลบไฟล์ที่ไม่เกี่ยวข้องทั้งหมดออกไป): . ├── include │ ├── animation.h │ ├── buffers.h │ ├── ... │ ├── vertex.h │ └── world.h └── src ├── animation.cpp ├── buffers.cpp ├── ... ├── vertex.cpp └── world.cpp ดังนั้นสิ่งที่ฉันพยายามทำก็แค่รวบรวมซอร์สลงในไลบรารีที่ใช้ร่วมกันแล้วติดตั้งด้วยไฟล์ส่วนหัว ตัวอย่างส่วนใหญ่ที่ฉันพบว่าคอมไพล์ไฟล์ปฏิบัติการกับไลบรารีที่แชร์บางไลบรารี แต่ไม่ใช่แค่ไลบรารีที่แชร์ธรรมดา นอกจากนี้ยังจะมีประโยชน์ถ้ามีคนบอกฉันเกี่ยวกับไลบรารีธรรมดา ๆ ที่ใช้ cmake ดังนั้นฉันสามารถใช้สิ่งนี้เป็นตัวอย่างได้

5
ตัวดำเนินการที่อยู่คู่ C ++? (&&)
ฉันกำลังอ่านซอร์สโค้ด STL และฉันไม่รู้ว่า&&ตัวดำเนินการที่อยู่ควรจะทำอะไร นี่คือตัวอย่างโค้ดจากstl_vector.h: vector& operator=(vector&& __x) // <-- Note double ampersands here { // NB: DR 675. this->clear(); this->swap(__x); return *this; } "Address of Address" มีความหมายหรือไม่? เหตุใดจึงมีตัวดำเนินการที่อยู่สองตัวแทนที่จะเป็นเพียงตัวดำเนินการเดียว

11
ทำไมฟังก์ชั่นเสมือนล้วนเริ่มต้นด้วย 0
เรามักจะประกาศฟังก์ชั่นเสมือนที่บริสุทธิ์เป็น: virtual void fun () = 0 ; นั่นคือมันถูกกำหนดเป็น 0 เสมอ สิ่งที่ฉันเข้าใจคือนี่คือการเริ่มต้นรายการ vtable สำหรับฟังก์ชั่นนี้เป็นโมฆะและค่าอื่น ๆ ที่นี่ส่งผลให้เกิดข้อผิดพลาดในเวลารวบรวม ความเข้าใจนี้ถูกต้องหรือไม่?

5
การประกาศหลักที่เหมาะสมคืออะไร?
ลายเซ็นที่เหมาะสมของmainฟังก์ชั่นใน C ++ คืออะไร? ประเภทผลตอบแทนที่ถูกต้องคืออะไรและการคืนค่ามาจากmainอะไร ประเภทพารามิเตอร์ที่อนุญาตคืออะไรและมีความหมายอย่างไร นี่เป็นระบบเฉพาะหรือไม่ กฎเหล่านั้นเปลี่ยนไปตามกาลเวลาหรือไม่? จะเกิดอะไรขึ้นถ้าฉันละเมิดพวกเขา
147 c++  main  c++-faq 

1
เหตุใดจึงมีชื่อชั้นฉีด
เมื่อเร็ว ๆ นี้ผมเห็นคุณลักษณะ C ++ แปลก: ฉีดชื่อชั้น class X { }; X x1; class X::X x2; // class X::X is equal to X class X::X::X x3; // ...and so on... แต่ฉันไม่สามารถเข้าใจได้ว่าทำไมคุณสมบัตินี้จึงจำเป็น มีการปฏิบัติที่ต้องใช้คุณสมบัตินี้หรือไม่? และฉันได้ยินว่าคุณสมบัตินี้ไม่มีอยู่ใน C ++ เก่า จากนั้นเมื่อไหร่ที่มันถูกนำมาใช้? C ++ 03? C ++ 11?
147 c++ 

7
ทำเครื่องหมาย C ++ ว่าเลิกใช้แล้ว
ฉันมีวิธีการในอินเทอร์เฟซที่ฉันต้องการคัดค้านด้วยพกพา C ++ เมื่อฉัน Googled สำหรับสิ่งนี้ทั้งหมดที่ฉันได้รับคือโซลูชันเฉพาะของ Microsoft; #pragma เลิกและ__declspec (เลิกใช้) ทางออกที่สองที่ได้รับรางวัลคือการแก้ปัญหา MSVC และ GCC ขอบคุณ
147 c++ 

11
การค้นหาประเภทของวัตถุใน C ++
ฉันมีคลาส A และคลาสอื่นที่สืบทอดมาจาก B. ฉันกำลังแทนที่ฟังก์ชันที่ยอมรับวัตถุประเภท A เป็นพารามิเตอร์ดังนั้นฉันต้องยอมรับ A อย่างไรก็ตามในภายหลังฉันเรียกใช้ฟังก์ชันที่มี B เท่านั้น ดังนั้นฉันต้องการกลับเท็จและไม่ดำเนินการต่อหากวัตถุที่ส่งผ่านไม่ใช่ประเภท B วิธีที่ดีที่สุดในการค้นหาประเภทของวัตถุที่ส่งผ่านไปยังฟังก์ชั่นของฉันคืออะไร?
147 c++  types 

6
ผู้รับมอบสิทธิ์ C ++ คืออะไร
แนวคิดทั่วไปของผู้รับมอบสิทธิ์ใน C ++ คืออะไร? พวกเขาคืออะไรพวกเขาจะใช้อย่างไรและพวกเขาจะใช้เพื่ออะไร ฉันต้องการเรียนรู้เกี่ยวกับพวกเขาเป็นครั้งแรกในแบบ 'กล่องดำ' แต่ข้อมูลเล็กน้อยเกี่ยวกับความกล้าหาญของสิ่งเหล่านี้ก็จะดีเช่นกัน นี่ไม่ใช่ C ++ ที่บริสุทธิ์ที่สุดหรือสะอาดที่สุด แต่ฉันสังเกตว่า codebase ที่ฉันใช้มีมากมาย ฉันหวังว่าจะเข้าใจพวกเขามากพอดังนั้นฉันจึงสามารถใช้พวกเขาได้และไม่ต้องเจาะลึกถึงแม่แบบเทมเพลตที่น่ากลัว บทความThe Code Projectทั้งสองนี้อธิบายสิ่งที่ฉันหมายถึง แต่ไม่ชัดเจนโดยเฉพาะ: ตัวชี้ฟังก์ชันสมาชิกและผู้รับ C ++ ที่เร็วที่สุดที่เป็นไปได้ ผู้ได้รับมอบหมายอย่างรวดเร็ว C ++ เป็นไปไม่ได้

8
การลบองค์ประกอบออกจาก std :: set ในขณะที่วนซ้ำ
ฉันต้องผ่านชุดและลบองค์ประกอบที่ตรงตามเกณฑ์ที่กำหนดไว้ล่วงหน้า นี่คือรหัสทดสอบที่ฉันเขียน: #include <set> #include <algorithm> void printElement(int value) { std::cout << value << " "; } int main() { int initNum[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::set<int> numbers(initNum, initNum + 10); // print '0 1 2 3 4 5 6 7 …

2
อะไรคือความแตกต่างระหว่าง sjlj vs dwarf vs seh?
ฉันหาข้อมูลไม่เพียงพอที่จะตัดสินใจว่าฉันควรใช้คอมไพเลอร์ใดในการรวบรวมโครงการของฉัน มีหลายโปรแกรมในคอมพิวเตอร์ที่ต่างกันจำลองกระบวนการ บน Linux ฉันใช้ GCC ทุกอย่างยอดเยี่ยม ฉันสามารถเพิ่มประสิทธิภาพรหัสมันรวบรวมอย่างรวดเร็วและใช้หน่วยความจำไม่มาก ฉันทำมาตรฐานของตัวเองด้วยคอมไพเลอร์ MSVC และ GCC หลังจากนั้นหนึ่งสร้างไบนารีเร็วขึ้นเล็กน้อย (สำหรับแต่ละ subar Architecture) แม้ว่าเวลาในการรวบรวมจะมากกว่า MSVC ดังนั้นฉันจึงตัดสินใจใช้ MinGW แต่ไม่พบคำอธิบายใด ๆ เกี่ยวกับวิธีการจัดการข้อยกเว้นและการใช้งานใน MinGW ฉันสามารถใช้การกระจายที่แตกต่างกันสำหรับระบบปฏิบัติการและสถาปัตยกรรมที่แตกต่างกัน การพิจารณา: เวลารวบรวมและหน่วยความจำไม่สำคัญสำหรับการใช้งานของฉัน สิ่งสำคัญเท่านั้นคือการปรับให้เหมาะสมแบบรันไทม์ ฉันต้องการโปรแกรมของฉันให้เร็วพอ คอมไพเลอร์ช้าเป็นที่ยอมรับ ระบบปฏิบัติการ: Microsoft Windows XP / 7/8 / Linux สถาปัตยกรรม: Intel Core i7 / Core2 / และ i686 รุ่นเก่าที่รัน XP: P


10
ข้อผิดพลาด Linux c ++: การอ้างอิงที่ไม่ได้กำหนดเป็น 'dlopen'
ฉันทำงานบน Linux ด้วย C ++ (Eclipse) และต้องการใช้ไลบรารี Eclipse แสดงข้อผิดพลาดให้ฉัน: undefined reference to 'dlopen' คุณรู้วิธีแก้ปัญหาหรือไม่? นี่คือรหัสของฉัน: #include <stdlib.h> #include <stdio.h> #include <dlfcn.h> int main(int argc, char **argv) { void *handle; double (*desk)(char*); char *error; handle = dlopen ("/lib/CEDD_LIB.so.6", RTLD_LAZY); if (!handle) { fputs (dlerror(), stderr); exit(1); } desk= dlsym(handle, "Apply"); if …
147 c++  linux  eclipse 

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