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

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

3
จะส่งต่อประกาศคลาสเทมเพลต C ++ ได้อย่างไร
กำหนดคลาสเทมเพลตดังต่อไปนี้: template<typename Type, typename IDType=typename Type::IDType> class Mappings { public: ... Type valueFor(const IDType& id) { // return value } ... }; มีคนส่งต่อประกาศคลาสนี้ในไฟล์ส่วนหัวได้อย่างไร

27
การสลับค่าตัวแปรสองค่าโดยไม่ใช้ตัวแปรที่สาม
หนึ่งในคำถามที่ยุ่งยากมากที่ถามในการสัมภาษณ์ สลับค่าของตัวแปรทั้งสองชอบและa=10b=15 โดยทั่วไปในการสลับค่าตัวแปรสองค่าเราต้องการตัวแปรที่ 3 เช่น: temp=a; a=b; b=temp; ตอนนี้ข้อกำหนดคือสลับค่าของสองตัวแปรโดยไม่ต้องใช้ตัวแปรที่ 3
104 c++ 

7
จุลภาคในมาโคร C / C ++
สมมติว่าเรามีมาโครแบบนี้ #define FOO(type,name) type name ซึ่งเราสามารถใช้เช่น FOO(int, int_var); แต่ไม่ง่ายอย่างนั้นเสมอไป: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 แน่นอนเราทำได้: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK ซึ่งไม่ถูกหลักสรีรศาสตร์ ต้องจัดการกับความเข้ากันไม่ได้ของประเภทบวก มีความคิดอย่างไรในการแก้ไขปัญหานี้ด้วยมาโคร
104 c++  c  macros  c-preprocessor 

1
ข้อผิดพลาดในการคอมไพล์ C ++: มีตัวเริ่มต้น แต่ประเภทไม่สมบูรณ์
ฉันกำลังเขียนโค้ดใน Eclipse และมีสิ่งต่อไปนี้: #include <ftream> #include <iostream> void read_file(){ char buffer[1025]; std::istringstream iss(buffer); } อย่างไรก็ตามเมื่อฉันพยายามสร้างฉันได้รับข้อผิดพลาดต่อไปนี้: variable 'std::istringstream iss' has initializer but incomplete type ความคิดด่วน ๆ ? ฉันได้ googled และดูเหมือนว่าคนส่วนใหญ่ที่มีปัญหานี้ไม่ได้รวมไฟล์ส่วนหัวที่ถูกต้องซึ่งฉันเชื่อว่าฉันทำถูกต้อง

3
Coroutines ใน C ++ 20 คืออะไร?
Coroutines คืออะไรใน c ++ 20เหรอ? แตกต่างจาก "Parallelism2" หรือ / และ "Concurrency2" อย่างไร (ดูภาพด้านล่าง) ภาพด้านล่างมาจาก ISOCPP https://isocpp.org/files/img/wg21-timeline-2017-03.png
104 c++  coroutine  c++20 

8
ฉันจะตรวจสอบการรองรับ C ++ 11 ได้อย่างไร
มีวิธีตรวจจับในเวลาคอมไพล์หรือไม่ว่าคอมไพเลอร์รองรับคุณสมบัติบางอย่างของ C ++ 11 หรือไม่? ตัวอย่างเช่นสิ่งนี้: #ifndef VARIADIC_TEMPLATES_SUPPORTED #error "Your compiler doesn't support variadic templates. :(" #else template <typename... DatatypeList> class Tuple { // ... } #endif
104 c++  c++11 

10
การจัดทำดัชนีเป็นโครงสร้างถูกกฎหมายหรือไม่?
ไม่ว่าโค้ดจะ 'แย่แค่ไหน' และสมมติว่าการจัดตำแหน่ง ฯลฯ ไม่ใช่ปัญหาในคอมไพเลอร์ / แพลตฟอร์มพฤติกรรมที่ไม่ได้กำหนดหรือเสียหรือไม่? ถ้าฉันมีโครงสร้างแบบนี้: - struct data { int a, b, c; }; struct data thing; มันเป็นสิ่งที่ถูกต้องตามกฎหมายในการเข้าถึงa, bและcเป็น(&thing.a)[0], (&thing.a)[1]และ(&thing.a)[2]? ในทุก ๆ คอมไพเลอร์และทุกแพลตฟอร์มที่ฉันลองใช้กับทุกการตั้งค่าที่ฉันลองมัน 'ได้ผล' ฉันแค่กังวลว่าคอมไพเลอร์อาจไม่ทราบว่าbและthing [1]เป็นสิ่งเดียวกันและเก็บค่า 'b' ไว้ในรีจิสเตอร์และสิ่งที่ [1] อ่านค่าผิดจากหน่วยความจำ (เช่น) ในทุกกรณีฉันพยายามทำในสิ่งที่ถูกต้อง (ฉันรู้แน่นอนว่ามันไม่ได้พิสูจน์อะไรมาก) นี่ไม่ใช่รหัสของฉัน มันรหัสฉันต้องทำงานกับฉันสนใจไม่ว่าจะเป็นที่ไม่ดีรหัสหรือเสียรหัสที่แตกต่างกันมีผลต่อการจัดลำดับความสำคัญของฉันสำหรับการเปลี่ยนแปลงการจัดการที่ดี :) ติดแท็ก C และ C ++ ฉันสนใจ C ++ เป็นส่วนใหญ่ แต่ยังรวมถึง C …
104 c++  c  struct 

13
การพิจารณาว่าตัวเลขเป็นผลคูณของสิบหรือภายในช่วงที่กำหนด
ฉันมีสองสามลูปที่ฉันต้องการในโปรแกรมของฉัน ฉันสามารถเขียนรหัสหลอกได้ แต่ฉันไม่แน่ใจว่าจะเขียนอย่างไรอย่างมีเหตุผล ฉันต้องการ - if (num is a multiple of 10) { do this } if (num is within 11-20, 31-40, 51-60, 71-80, 91-100) { do this } else { do this } //this part is for 1-10, 21-30, 41-50, 61-70, 81-90 เกมนี้มีไว้สำหรับเกมกระดานบันไดงูถ้ามันสมเหตุสมผลกว่าสำหรับคำถามของฉัน ฉันคิดว่าคำสั่งifแรกฉันต้องใช้โมดูลัส จะif (num == 100%10)ถูกต้องหรือไม่? อันที่สองฉันไม่รู้ …

7
ทำไม Argc ถึงไม่คงที่?
int main( const int argc , const char[] const argv) ในฐานะที่เป็นที่มีประสิทธิภาพ c ++ Item # 3 รัฐ "ใช้ const เมื่อใดก็ตามที่เป็นไปได้" ผมเริ่มคิด "ทำไมไม่ทำให้ 'คงที่' พารามิเตอร์เหล่านี้const"? มีสถานการณ์ใดบ้างที่argcมีการแก้ไขค่าในโปรแกรม?
104 c++  const  main  argc  effective-c++ 

4
ตัวดำเนินการบูล ++ และ -
วันนี้ในขณะที่เขียนโค้ด Visual C ++ ฉันเจอสิ่งที่ทำให้ฉันประหลาดใจ ดูเหมือนว่า C ++ รองรับ ++ (เพิ่มขึ้น) สำหรับบูล แต่ไม่ใช่ - (ลดลง) นี่เป็นเพียงการตัดสินใจแบบสุ่มหรือมีเหตุผลบางอย่างอยู่เบื้องหลัง? สิ่งนี้รวบรวม: static HMODULE hMod = NULL; static bool once = false; if (!once++) hMod = LoadLibrary("xxx"); สิ่งนี้ไม่: static HMODULE hMod = NULL; static bool once = true; if (once--) hMod = LoadLibrary("xxx");
104 c++  boolean  increment 

2
SDL renderer คืออะไร?
ฉันเริ่มต้นด้วย SDL2 และมีปัญหาในการพยายามทำความเข้าใจว่า SDL_Renderer คืออะไร มันคืออะไร? มันทำอะไร? อะไรคือความแตกต่างระหว่าง SDL_Renderer, SDL_Window, SDL_Surface และ SDL_Texture และเกี่ยวข้องกันอย่างไร ฉันมีปัญหากับสิ่งนี้เมื่อพยายามทำความเข้าใจรหัสเบื้องต้นนี้: #include <iostream> #include <SDL2/SDL.h> int main() { /* Starting SDL */ if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl; return 1; } /* Create a Window */ SDL_Window *window …
104 c++  sdl  terminology  sdl-2 

2
ฉันสามารถเรียก memcpy () และ memmove () โดยตั้งค่า "จำนวนไบต์" เป็นศูนย์ได้หรือไม่
ฉันจำเป็นต้องปฏิบัติต่อกรณีหรือไม่เมื่อฉันไม่มีสิ่งใดให้เคลื่อนย้าย / คัดลอกโดยมีmemmove()/ memcpy()เป็นกรณีขอบ int numberOfBytes = ... if( numberOfBytes != 0 ) { memmove( dest, source, numberOfBytes ); } หรือฉันควรเรียกใช้ฟังก์ชันโดยไม่ตรวจสอบ int numberOfBytes = ... memmove( dest, source, numberOfBytes ); การตรวจสอบข้อมูลโค้ดในอดีตจำเป็นหรือไม่
104 c++  c  pointers  memcpy  memmove 

4
อ้างอิงโมฆะได้หรือไม่?
รหัสชิ้นนี้ถูกต้อง (และพฤติกรรมที่กำหนด) หรือไม่ int &nullReference = *(int*)0; ทั้งสองกรัม ++ ++ และเสียงดังกราวรวบรวมไว้โดยไม่มีการเตือนใด ๆ แม้เมื่อใช้-Wall, -Wextra, -std=c++98, -pedantic, -Weffc++... แน่นอนว่าการอ้างอิงไม่ได้เป็นโมฆะเนื่องจากไม่สามารถเข้าถึงได้ (หมายถึงการยกเลิกการอ้างอิงตัวชี้ค่าว่าง) แต่เราสามารถตรวจสอบได้ว่าเป็นโมฆะหรือไม่โดยการตรวจสอบที่อยู่: if( & nullReference == 0 ) // null reference

7
ตัวเลขสุ่มถ่วงน้ำหนัก
ฉันกำลังพยายามใช้ตัวเลขสุ่มแบบถ่วงน้ำหนัก ตอนนี้ฉันแค่เอาหัวโขกกำแพงและคิดไม่ออก ในโครงการของฉัน (Hold'em hand-range, subjective all-in equity analysis) ฉันใช้ฟังก์ชันสุ่มของ Boost สมมติว่าฉันต้องการเลือกตัวเลขสุ่มระหว่าง 1 ถึง 3 (เช่น 1, 2 หรือ 3) เครื่องกำเนิดไฟฟ้า Twister mersenne ของ Boost ทำงานได้อย่างมีเสน่ห์สำหรับสิ่งนี้ อย่างไรก็ตามฉันต้องการให้ตัวเลือกถูกถ่วงน้ำหนักเช่นนี้: 1 (weight: 90) 2 (weight: 56) 3 (weight: 4) Boost มีฟังก์ชันบางอย่างสำหรับสิ่งนี้หรือไม่?
104 c++  boost  random 

11
วิธีการแปลงสตริงเป็น char array ใน C ++
ผมอยากจะแปลงstringไปcharอาร์เรย์ char*แต่ไม่ ฉันรู้วิธีแปลงสตริงเป็นchar*(โดยใช้mallocหรือวิธีที่ฉันโพสต์ไว้ในโค้ดของฉัน) - แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉันแค่ต้องการแปลงstringเป็นchar[size]อาร์เรย์ เป็นไปได้ไหม? #include <iostream> #include <string> #include <stdio.h> using namespace std; int main() { // char to string char tab[4]; tab[0] = 'c'; tab[1] = 'a'; tab[2] = 't'; tab[3] = '\0'; string tmp(tab); cout << tmp << "\n"; // string to char* - but …

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