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

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

13
ตำแหน่งของเครื่องหมายดอกจันในการประกาศตัวชี้
ฉันเพิ่งตัดสินใจว่าในที่สุดฉันก็ต้องเรียนรู้ C / C ++ และมีสิ่งหนึ่งที่ฉันไม่เข้าใจจริงๆเกี่ยวกับพอยน์เตอร์หรือคำจำกัดความของมัน ตัวอย่างเหล่านี้เป็นอย่างไร: int* test; int *test; int * test; int* test,test2; int *test,test2; int * test,test2; ตอนนี้ตามความเข้าใจของฉันสามกรณีแรกล้วนทำเหมือนกัน: การทดสอบไม่ใช่ int แต่เป็นตัวชี้ไปที่หนึ่ง ตัวอย่างชุดที่สองค่อนข้างยุ่งยากกว่าเล็กน้อย ในกรณีที่ 4 ทั้ง test และ test2 จะเป็นตัวชี้ไปที่ int ในขณะที่ในกรณีที่ 5 การทดสอบเท่านั้นที่เป็นตัวชี้ในขณะที่ test2 เป็น int "จริง" แล้วกรณีที่ 6 ล่ะ? เหมือนกับกรณีที่ 5 หรือไม่?
95 c++  c  pointers  declaration 

7
ไม่พบข้อผิดพลาดตัวระบุ 'uint32_t'
ฉันกำลังโอนรหัสจาก Linux C ไปยัง Visual C ++ สำหรับ Windows Visual C ++ ไม่ทราบ#include <stdint.h>ดังนั้นฉันจึงแสดงความคิดเห็นออกไป ต่อมาฉันพบ'uint32_t': identifier not foundข้อผิดพลาดเหล่านั้นมากมาย จะแก้ไขได้อย่างไร?
95 c++  c  visual-c++ 


10
เหตุใด C ++ จึงไม่อนุญาตให้สืบทอดมิตรภาพ
เหตุใดอย่างน้อยมิตรภาพจึงไม่สามารถสืบทอดได้ใน C ++? ฉันเข้าใจว่าการเคลื่อนย้ายและการสะท้อนกลับถูกห้ามด้วยเหตุผลที่ชัดเจน (ฉันพูดสิ่งนี้เพื่อตัดคำตอบของใบเสนอราคาคำถามที่พบบ่อยธรรมดา ๆ เท่านั้น) แต่ฉันขาดบางสิ่งบางอย่างตามแนวของvirtual friend class Foo;ปริศนา มีใครทราบความเป็นมาทางประวัติศาสตร์เบื้องหลังการตัดสินใจครั้งนี้บ้าง? มิตรภาพเป็นเพียงการแฮ็คที่ จำกัด ซึ่งนับตั้งแต่นั้นมาก็กลายเป็นการใช้งานที่น่านับถือที่คลุมเครือไม่กี่อย่าง? แก้ไขเพื่อความกระจ่าง:ฉันกำลังพูดถึงสถานการณ์ต่อไปนี้ไม่ใช่ที่ที่เด็กของ A สัมผัสกับ B หรือทั้ง B และลูก ๆ ของมัน ฉันยังสามารถจินตนาการได้ว่าการอนุญาตให้เข้าถึงการลบล้างฟังก์ชันของเพื่อนเป็นต้น class A { int x; friend class B; }; class B { // OK as per friend declaration above. void foo(A& a, int n) { …

3
ทำไมต้องลบตัวสร้างอย่างชัดเจน
เมื่อไร / เหตุใดฉันจึงต้องการลบตัวสร้างของฉันอย่างชัดเจน สมมติว่าเหตุผลคือเพื่อป้องกันการใช้งานทำไมไม่ทำให้มันprivate? class Foo { public: Foo() = delete; };
95 c++ 

4
วิธีการประกาศ std :: unique_ptr และการใช้งานคืออะไร?
ฉันพยายามที่จะเข้าใจวิธีstd::unique_ptrการทำงานและการที่ผมพบนี้เอกสาร ผู้เขียนเริ่มจากตัวอย่างต่อไปนี้: #include <utility> //declarations of unique_ptr using std::unique_ptr; // default construction unique_ptr<int> up; //creates an empty object // initialize with an argument unique_ptr<int> uptr (new int(3)); double *pd= new double; unique_ptr<double> uptr2 (pd); // overloaded * and -> *uptr2 = 23.5; unique_ptr<std::string> ups (new std::string("hello")); int len=ups->size(); สิ่งที่ทำให้ฉันสับสนคือในบรรทัดนี้ unique_ptr<int> …
95 c++  pointers  std  unique-ptr 

4
การสร้างอินสแตนซ์เทมเพลตที่ชัดเจน - ใช้เมื่อใด
หลังจากหยุดพักไปสองสามสัปดาห์ฉันกำลังพยายามขยายและขยายความรู้เกี่ยวกับเทมเพลตด้วยเทมเพลตหนังสือ- The Complete Guideโดย David Vandevoorde และ Nicolai M. Josuttis และสิ่งที่ฉันพยายามทำความเข้าใจในตอนนี้คือการสร้างเทมเพลตอย่างชัดเจน . ฉันไม่ได้มีปัญหากับกลไกเช่นนี้ แต่ฉันนึกไม่ออกว่าฉันต้องการหรือต้องการใช้คุณสมบัตินี้ ถ้าใครสามารถอธิบายให้ฉันฟังได้ฉันจะขอบคุณมากกว่านี้
95 c++  templates 

6
แก้ไขข้อผิดพลาดการแบ่งกลุ่มใน C ++
ฉันกำลังเขียนโปรแกรม C ++ ข้ามแพลตฟอร์มสำหรับ Windows และ Unix ทางฝั่ง Window โค้ดจะคอมไพล์และรันได้อย่างไม่มีปัญหา ในด้าน Unix จะรวบรวมอย่างไรก็ตามเมื่อฉันพยายามเรียกใช้ฉันได้รับข้อผิดพลาดในการแบ่งส่วน ลางสังหรณ์เริ่มต้นของฉันคือมีปัญหากับพอยน์เตอร์ อะไรคือวิธีการที่ดีในการค้นหาและแก้ไขข้อผิดพลาดในการแบ่งส่วน

3
C ++ 17 มีการรับประกันลำดับการประเมินอะไรบ้าง
ผลกระทบของการโหวตใน การรับประกันลำดับการประเมิน C ++ 17 (P0145)ในรหัส C ++ ทั่วไป สิ่งต่อไปนี้มีการเปลี่ยนแปลงอย่างไร i = 1; f(i++, i) และ std::cout << f() << f() << f(); หรือ f(g(), h(), j());

17
วิธีที่ง่ายที่สุดในการทดสอบว่าตัวเลขเป็นเลขยกกำลัง 2 ใน C ++ อย่างไร
ฉันต้องการฟังก์ชั่นเช่นนี้: // return true iff 'n' is a power of 2, e.g. // is_power_of_2(16) => true is_power_of_2(3) => false bool is_power_of_2(int n); ใครช่วยแนะนำว่าฉันจะเขียนสิ่งนี้ได้อย่างไร คุณช่วยบอกฉันว่ามีเว็บไซต์ดีๆที่สามารถหาอัลกอริทึมประเภทนี้ได้ไหม

17
สร้างตัวเลขสุ่มอย่างสม่ำเสมอตลอดทั้งช่วง
ฉันต้องการสร้างตัวเลขสุ่มภายในช่วงเวลาที่กำหนด [max; min] นอกจากนี้ควรกระจายตัวเลขสุ่มอย่างสม่ำเสมอตลอดช่วงเวลาไม่ได้อยู่ที่จุดใดจุดหนึ่ง Currenly ฉันกำลังสร้างเป็น: for(int i=0; i<6; i++) { DWORD random = rand()%(max-min+1) + min; } จากการทดสอบของฉันตัวเลขสุ่มจะถูกสร้างขึ้นเพียงจุดเดียวเท่านั้น Example min = 3604607; max = 7654607; สร้างตัวเลขสุ่ม: 3631594 3609293 3630000 3628441 3636376 3621404 จากคำตอบด้านล่าง: ตกลง RAND_MAX คือ 32767 ฉันอยู่บนแพลตฟอร์ม C ++ Windows มีวิธีอื่นในการสร้างตัวเลขสุ่มที่มีการแจกแจงสม่ำเสมอหรือไม่?
95 c++  random 

4
วิธีการรับองค์ประกอบบางอย่างในรายการโดยได้รับตำแหน่ง?
ฉันมีรายการ: list<Object> myList; myList.push_back(Object myObject); ฉันไม่แน่ใจ แต่ฉันมั่นใจว่านี่จะเป็นองค์ประกอบ "0" ในอาร์เรย์ มีฟังก์ชันใดบ้างที่ฉันสามารถใช้ที่จะส่งคืน "myObject"? Object copy = myList.find_element(0); เหรอ?
95 c++  list  stl 

2
[=] หมายความว่าอย่างไรใน C ++
ฉันอยากรู้ว่าอะไร[=]? นี่คือตัวอย่างสั้น ๆ template <typename T> std::function<T (T)> makeConverter(T factor, T offset) { return [=] (T input) -> T { return (offset + input) * factor; }; } auto milesToKm = makeConverter(1.60936, 0.0); รหัสจะทำงานร่วมกับ[]แทนที่จะเป็น[=]อย่างไร ฉันคิดว่า std::function<T (T)> หมายถึงต้นแบบฟังก์ชันที่ได้รับ(T)เป็นอาร์กิวเมนต์และประเภทการส่งคืนT?
95 c++  c++11  lambda 

6
ความยาวการคำนวณของสตริง C ในเวลาคอมไพล์ นี่คือ constexpr จริงๆหรือ?
ฉันกำลังพยายามคำนวณความยาวของสตริงลิเทอรัลในเวลาคอมไพล์ ในการทำเช่นนั้นฉันใช้รหัสต่อไปนี้: #include <cstdio> int constexpr length(const char* str) { return *str ? 1 + length(str + 1) : 0; } int main() { printf("%d %d", length("abcd"), length("abcdefgh")); } ทุกอย่างทำงานตามที่คาดไว้โปรแกรมจะพิมพ์ 4 และ 8 รหัสแอสเซมบลีที่สร้างขึ้นโดยเสียงดังแสดงว่าผลลัพธ์ถูกคำนวณในเวลาคอมไพล์: 0x100000f5e: leaq 0x35(%rip), %rdi ; "%d %d" 0x100000f65: movl $0x4, %esi 0x100000f6a: movl $0x8, %edx 0x100000f6f: …

8
แลมด้า C ++ พร้อมแคปเจอร์เป็นตัวชี้ฟังก์ชัน
ฉันกำลังเล่นกับ C ++ lambdas และการแปลงโดยนัยเป็นฟังก์ชันพอยน์เตอร์ ตัวอย่างเริ่มต้นของฉันใช้เป็นคำเรียกกลับสำหรับฟังก์ชัน ftw สิ่งนี้ได้ผลตามที่คาดไว้ #include <ftw.h> #include <iostream> using namespace std; int main() { auto callback = [](const char *fpath, const struct stat *sb, int typeflag) -> int { cout << fpath << endl; return 0; }; int ret = ftw("/etc", callback, 1); return ret; } …

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