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

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

9
มีวิธีในการยกตัวอย่างวัตถุจากสตริงที่มีชื่อชั้นของพวกเขาหรือไม่?
ฉันมีไฟล์: Base.h class Base; class DerivedA : public Base; class DerivedB : public Base; /*etc...*/ และไฟล์อื่น: BaseFactory.h #include "Base.h" class BaseFactory { public: BaseFactory(const string &sClassName){msClassName = sClassName;}; Base * Create() { if(msClassName == "DerivedA") { return new DerivedA(); } else if(msClassName == "DerivedB") { return new DerivedB(); } else …

13
ข้อผิดพลาด LNK2019: สัญลักษณ์ภายนอกที่ไม่ได้รับการแก้ไข _WinMain @ 16 อ้างอิงในฟังก์ชัน ___tmainCRTStartup
ขณะที่ฉันกำลังเรียกใช้รหัสอย่างง่ายด้านล่างฉันมีข้อผิดพลาดสองประการดังนี้: #include <iostream> #include <string> using namespace::std; template <class Type> class Stack { public: Stack (int max):stack(new Type[max]), top(-1), maxsize(max){} ~Stack (void) {delete []stack;} void Push (Type &val); void Pop (void) {if (top>=0) --top;} Type& Top (void) {return stack[top];} //friend ostream& operator<< (ostream&, Stack&); private: Type *stack; int top; const …

6
สร้างตัวเลขสุ่มโดยใช้ไลบรารีสุ่ม C ++ 11
ตามที่ชื่อแนะนำฉันกำลังพยายามหาวิธีสร้างตัวเลขสุ่มโดยใช้<random>ไลบรารีC ++ 11 ใหม่ ฉันได้ลองใช้รหัสนี้แล้ว: std::default_random_engine generator; std::uniform_real_distribution<double> uniform_distance(1, 10.001); ปัญหาเกี่ยวกับรหัสที่ฉันมีคือทุกครั้งที่ฉันรวบรวมและเรียกใช้มันจะสร้างตัวเลขเดียวกันเสมอ ดังนั้นคำถามของฉันคือฟังก์ชั่นอื่น ๆ ในไลบรารีสุ่มสามารถทำสิ่งนี้ได้ในขณะที่สุ่มอย่างแท้จริง? สำหรับกรณีการใช้งานโดยเฉพาะของฉันฉันพยายามหาค่าภายในช่วง [1, 10]
143 c++  c++11  random  range 

6
_DEBUG เทียบกับ NDEBUG
ควรใช้ตัวประมวลผลล่วงหน้าชุดใดเพื่อระบุส่วนการดีบักของรหัส ใช้#ifdef _DEBUGหรือ#ifndef NDEBUGหรือมีวิธีที่ดีกว่าที่จะทำเช่น#define MY_DEBUG? ฉันคิดว่า_DEBUGเป็น Visual Studio เฉพาะมาตรฐาน NDEBUG หรือไม่
142 c++  c  debugging 

6
ทำไมการทดสอบความไม่เท่าเทียมกันเป็น (! (a == b)) ในรหัสไลบรารีมาตรฐาน C ++ จำนวนมาก
นี่คือรหัสจากremoveรหัสไลบรารีมาตรฐาน C ++ ทำไมไม่เท่าเทียมกันทดสอบเป็นif (!(*first == val))แทนif (*first != val)? template <class ForwardIterator, class T> ForwardIterator remove (ForwardIterator first, ForwardIterator last, const T& val) { ForwardIterator result = first; while (first!=last) { if (!(*first == val)) { *result = *first; ++result; } ++first; } return result; }
142 c++ 

4
Pass-by-value เป็นค่าเริ่มต้นที่สมเหตุสมผลใน C ++ 11 หรือไม่
ใน C ++ แบบดั้งเดิมการส่งผ่านค่าไปยังฟังก์ชั่นและวิธีการจะช้าสำหรับวัตถุขนาดใหญ่และโดยทั่วไปจะขมวดคิ้ว แต่โปรแกรมเมอร์ C ++ มักจะส่งต่อการอ้างอิงไปรอบ ๆ ซึ่งเร็วกว่า แต่แนะนำคำถามที่ซับซ้อนทุกประเภทเกี่ยวกับการเป็นเจ้าของและโดยเฉพาะการจัดการหน่วยความจำ (ในกรณีที่วัตถุจัดสรรเป็นฮีป) ตอนนี้ใน C ++ 11 เรามี Rvalue reference และ move constructors ซึ่งหมายความว่ามันเป็นไปได้ที่จะใช้ object ขนาดใหญ่ (เช่นstd::vector) ที่ราคาถูกเพื่อส่งผ่านค่าเข้าและออกจากฟังก์ชัน ดังนั้นนี่หมายความว่าค่าเริ่มต้นควรจะส่งผ่านตามค่าสำหรับอินสแตนซ์ของประเภทเช่นstd::vectorและstd::string? แล้ววัตถุที่กำหนดเองล่ะ? แนวปฏิบัติที่ดีที่สุดแบบใหม่คืออะไร
142 c++  coding-style  c++11 

4
กำหนดวิธีการคงที่ในไฟล์ต้นฉบับด้วยการประกาศในส่วนหัวของไฟล์ใน C ++
ฉันมีปัญหาเล็กน้อยในการทำงานกับวิธีการคงที่ใน C ++ ตัวอย่าง. h: class IC_Utility { public: IC_Utility(); ~IC_Utility(); std::string CP_PStringToString( const unsigned char *outString ); void CP_StringToPString( std::string& inString, unsigned char *outString, short inMaxLength ); static void CP_StringToPString( std::string& inString, unsigned char *outString); void CP_StringToPString( FxString& inString, FxUChar *outString); }; ตัวอย่าง. cpp: static void IC_Utility::CP_StringToPString(std::string& inString, unsigned …

5
เพิ่ม Statechart กับ Meta State Machine
เพิ่มชัดเจนมีสองห้องสมุดแยกต่างหากสำหรับเครื่องรัฐ: StatechartและMeta State Machine (MSM) สโลแกนให้คำอธิบายที่คล้ายกันมาก: Boost.Statechart - เครื่องสถานะ จำกัด ที่ซับซ้อนโดยพลการสามารถนำไปใช้ในรหัส C ++ ที่อ่านได้ง่ายและบำรุงรักษาได้ Meta State Machine - ห้องสมุดที่มีประสิทธิภาพสูงสำหรับเครื่องจักรสถานะ จำกัด UML2 ที่แสดงออกได้ คุณรู้หรือไม่ว่าอะไรคือความแตกต่างที่สำคัญและสิ่งที่ต้องพิจารณาในการเลือกระหว่างสองอย่างนี้คืออะไร?

7
การเรียก constructors ใน c ++ โดยไม่มีสิ่งใหม่
ฉันมักจะเห็นว่าผู้คนสร้างวัตถุใน C ++ โดยใช้ Thing myThing("asdf"); แทนสิ่งนี้: Thing myThing = Thing("asdf"); ดูเหมือนว่าจะใช้งานได้ (โดยใช้ gcc) อย่างน้อยตราบใดที่ไม่มีเทมเพลตที่เกี่ยวข้อง คำถามของฉันตอนนี้บรรทัดแรกนั้นถูกต้องหรือไม่และถ้าเป็นเช่นนั้นฉันควรใช้หรือไม่
142 c++ 

6
แลมบ์ดาชนิดใดเมื่ออนุมานด้วย“ auto” ใน C ++ 11
ฉันเข้าใจว่าแลมบ์ดาเป็นตัวชี้ฟังก์ชั่น เมื่อฉันทำการทดสอบต่อไปนี้ฉันพบว่ามันผิด ( สาธิต ) #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) == typeid(pAuto)); // assertion fails ! } รหัสข้างต้นหายไปจุดใด? ถ้าไม่เช่นtypeofนั้นแลมบ์ดานิพจน์คืออะไรเมื่ออนุมานด้วยautoคำหลัก?
142 c++  lambda  c++11  typeof  auto 

5
ฉันควรใช้ std :: function หรือ function pointer ใน C ++ หรือไม่
เมื่อใช้ฟังก์ชั่นการโทรกลับใน C ++ ฉันควรจะใช้ตัวชี้ฟังก์ชั่น C-style: void (*callbackFunc)(int); หรือฉันควรใช้ประโยชน์จากฟังก์ชั่น std :: std::function< void(int) > callbackFunc;
142 c++  function  c++11  callback  std 


6
การเชื่อมโยงไลบรารีแบบคงที่กับไลบรารีแบบคงที่อื่น ๆ
ฉันมีโค้ดชิ้นเล็ก ๆ ที่ขึ้นอยู่กับไลบรารีแบบคงที่จำนวนมาก (a_1-a_n) ฉันต้องการจัดแพ็กเกจโค้ดนั้นในไลบรารีแบบคงที่และทำให้คนอื่น ๆ สามารถใช้งานได้ ห้องสมุดคงที่ของฉันเรียกมันว่า X รวบรวมได้ดี ฉันได้สร้างโปรแกรมตัวอย่างง่ายๆที่ใช้ฟังก์ชันจาก X แต่เมื่อฉันพยายามเชื่อมโยงกับ X ฉันได้รับข้อผิดพลาดมากมายเกี่ยวกับสัญลักษณ์ที่หายไปจากไลบรารี a_1 - a_n มีวิธีใดบ้างที่ฉันสามารถสร้างไลบรารีแบบคงที่ Y ที่มี X และฟังก์ชันทั้งหมดที่ต้องการโดย X (บิตที่เลือกจาก a_1 - a_n) เพื่อให้ฉันสามารถแจกจ่ายเฉพาะ Y เพื่อให้ผู้คนเชื่อมโยงโปรแกรมของตนได้ อัพเดท: ฉันดูแค่การทิ้งทุกอย่างด้วยarและสร้าง mega-lib หนึ่งอัน แต่สุดท้ายก็มีสัญลักษณ์มากมายที่ไม่จำเป็น (ไฟล์. o ทั้งหมดมีขนาดประมาณ 700 MB อย่างไรก็ตามไฟล์ปฏิบัติการที่เชื่อมโยงแบบคงที่คือ 7 MB). มีวิธีที่ดีในการรวมเฉพาะสิ่งที่จำเป็นจริงหรือไม่? สิ่งนี้มีความเกี่ยวข้องอย่างใกล้ชิดกับวิธีการรวมไลบรารี C / C ++ …
142 c++  linker  ar  .a 

9
เอกสารที่ดีที่สุดสำหรับ Boost: asio?
เอกสารที่มีอยู่ในเว็บไซต์เพิ่มมี จำกัด ... จากสิ่งที่ฉันสามารถอ่านได้ฉันทามติทั่วไปก็คือมันยากที่จะหาเอกสารที่ดีเกี่ยวกับ boost :: asio library เป็นกรณีนี้จริงเหรอ? ถ้าเป็นเช่นนั้นทำไม หมายเหตุ: ฉันได้พบเว็บไซต์ Asio (ไม่เพิ่ม) แล้วและเอกสารดูเหมือนจะเหมือนกับเว็บไซต์ Boost ฉันรู้ว่า Boost :: asio เป็นของใหม่! ฉันกำลังมองหาวิธีแก้ปัญหาไม่ใช่ข้อแก้ตัว แก้ไข: มีข้อเสนอให้เพิ่มไลบรารีเครือข่ายในไลบรารีมาตรฐานสำหรับ TR2 ที่เขียนโดยผู้แต่ง Boost: asio (Christopher Kohlhoff) แม้ว่าจะไม่ใช่เอกสารสำหรับเพิ่ม: asio มันใช้เป็นฐานสำหรับข้อเสนอ TR2 เนื่องจากผู้เขียนใช้ความพยายามมากขึ้นในเอกสารนี้ฉันพบว่ามันค่อนข้างมีประโยชน์หากไม่ได้เป็นการอ้างอิงดังนั้นอย่างน้อยก็เป็นภาพรวม
141 c++  boost  boost-asio 

6
สร้าง Iterators ของฉันเอง
ฉันพยายามเรียนรู้ C ++ ดังนั้นให้อภัยฉันถ้าคำถามนี้แสดงให้เห็นถึงการขาดความรู้พื้นฐานคุณเห็นไหมความจริงก็คือฉันไม่มีความรู้พื้นฐาน ฉันต้องการความช่วยเหลือในการหาวิธีสร้างตัววนซ้ำสำหรับชั้นเรียนที่ฉันสร้างขึ้น ฉันมีคลาส 'รูปร่าง' ซึ่งมีที่เก็บคะแนน ฉันมีคลาส 'ชิ้นส่วน' ซึ่งอ้างอิงรูปร่างและกำหนดตำแหน่งสำหรับรูปร่าง ชิ้นส่วนไม่มีรูปร่างมันเพียงแค่อ้างอิงรูปร่าง ฉันต้องการให้ดูเหมือนว่า Piece เป็นคอนเทนเนอร์ของคะแนนซึ่งเหมือนกับของ Shape ที่อ้างอิง แต่ด้วยออฟเซ็ตของตำแหน่งของ Piece ที่เพิ่มเข้ามา ฉันต้องการที่จะสามารถย้ำผ่านคะแนนของชิ้นเหมือนว่าชิ้นเป็นภาชนะเอง ฉันอ่านหนังสือไปรอบ ๆ แล้วไม่พบอะไรที่ช่วยฉันได้ ฉันจะขอบคุณมากสำหรับพอยน์เตอร์ใด ๆ
141 c++  iterator 

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