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

เทมเพลตแท็กใช้ในหลายบริบท: การเขียนโปรแกรมทั่วไป (โดยเฉพาะ C ++) และการสร้างข้อมูล / เอกสารโดยใช้เทมเพลตเอนจิ้น เมื่อใช้แท็กนี้กับคำถามที่มีการใช้งานหนัก - ติดแท็กรหัสภาษาที่มีการใช้งาน

12
ทำไมไม่อนุมานพารามิเตอร์เทมเพลตจากตัวสร้าง
คำถามของฉันวันนี้ค่อนข้างง่าย: ทำไมคอมไพเลอร์ไม่สามารถสรุปพารามิเตอร์เทมเพลตจากตัวสร้างคลาสได้มากเท่าที่จะทำได้จากพารามิเตอร์ฟังก์ชัน ตัวอย่างเช่นเหตุใดรหัสต่อไปนี้จึงไม่ถูกต้อง: template<typename obj> class Variable { obj data; public: Variable(obj d) { data = d; } }; int main() { int num = 2; Variable var(num); //would be equivalent to Variable<int> var(num), return 0; //but actually a compile error } อย่างที่ฉันพูดฉันเข้าใจว่ามันไม่ถูกต้องดังนั้นคำถามของฉันคือทำไมไม่เป็นเช่นนั้น? จะช่วยให้สิ่งนี้สร้างช่องทางไวยากรณ์ที่สำคัญหรือไม่? มีอินสแตนซ์ที่ใครไม่ต้องการฟังก์ชันนี้ (โดยที่การอนุมานประเภทจะทำให้เกิดปัญหา)? ฉันแค่พยายามเข้าใจตรรกะเบื้องหลังการอนุญาตให้มีการอนุมานเทมเพลตสำหรับฟังก์ชัน แต่ไม่ใช่สำหรับคลาสที่สร้างขึ้นอย่างเหมาะสม

13
ฉันจะใช้เทมเพลต Django โดยไม่เหลือ Django ได้อย่างไร
ฉันต้องการใช้เครื่องมือเทมเพลต Django ในโค้ด (Python) ของฉัน แต่ฉันไม่ได้สร้างเว็บไซต์ที่ใช้ Django ฉันจะใช้งานได้อย่างไรโดยไม่ต้องมีไฟล์ settings.py (และอื่น ๆ ) และต้องตั้งค่าตัวแปรสภาพแวดล้อม DJANGO_SETTINGS_MODULE หากฉันเรียกใช้รหัสต่อไปนี้: >>> import django.template >>> from django.template import Template, Context >>> t = Template('My name is {{ my_name }}.') ฉันเข้าใจ: ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

13
ข้อดีของเทมเพลตที่ไม่ใช้ลอจิก (เช่นหนวด) คืออะไร?
เมื่อเร็ว ๆ นี้ฉันวิ่งเข้าไปหนวดซึ่งจะอ้างว่าเป็นลอจิกน้อยแม่แบบ อย่างไรก็ตามไม่มีคำอธิบายว่าเหตุใดจึงได้รับการออกแบบในลักษณะที่ไม่ใช้ตรรกะ กล่าวอีกนัยหนึ่งข้อดีของเทมเพลตที่ไม่ใช้ตรรกะคืออะไร?

7
ฉันจะส่งออกค่าของคลาส enum ใน C ++ 11 ได้อย่างไร
ฉันจะส่งออกค่าของenum classใน C ++ 11 ได้อย่างไร ใน C ++ 03 จะเป็นเช่นนี้: #include <iostream> using namespace std; enum A { a = 1, b = 69, c= 666 }; int main () { A a = A::c; cout << a << endl; } ใน c ++ 0x รหัสนี้ไม่ได้รวบรวม #include <iostream> using …

4
ความหมายหลายอย่างของความเชี่ยวชาญเทมเพลตเมื่อใช้วัตถุที่แตกต่างกัน
เมื่อฉันใช้เทมเพลตพิเศษในไฟล์ออบเจ็กต์อื่นฉันได้รับข้อผิดพลาด "คำจำกัดความหลายรายการ" เมื่อทำการเชื่อมโยง วิธีแก้ปัญหาเดียวที่ฉันพบคือการใช้ฟังก์ชัน "อินไลน์" แต่ดูเหมือนวิธีแก้ปัญหาบางอย่าง ฉันจะแก้ปัญหาโดยไม่ใช้คีย์เวิร์ด "อินไลน์" ได้อย่างไร ถ้าเป็นไปไม่ได้ทำไม? นี่คือรหัสตัวอย่าง: paulo@aeris:~/teste/cpp/redef$ cat hello.h #ifndef TEMPLATE_H #define TEMPLATE_H #include <iostream> template <class T> class Hello { public: void print_hello(T var); }; template <class T> void Hello<T>::print_hello(T var) { std::cout << "Hello generic function " << var << "\n"; } template …
100 c++  templates 

16
การแบ่งคลาส C ++ แบบเทมเพลเป็นไฟล์. hpp / .cpp - เป็นไปได้ไหม
ฉันได้รับข้อผิดพลาดในการพยายามรวบรวมคลาสเทมเพลต C ++ ซึ่งแยกระหว่าง a .hppและ.cppไฟล์: $ g++ -c -o main.o main.cpp $ g++ -c -o stack.o stack.cpp $ g++ -o main main.o stack.o main.o: In function `main': main.cpp:(.text+0xe): undefined reference to 'stack<int>::stack()' main.cpp:(.text+0x1c): undefined reference to 'stack<int>::~stack()' collect2: ld returned 1 exit status make: *** [program] Error 1 นี่คือรหัสของฉัน: …

8
initializer_list และย้ายความหมาย
ฉันได้รับอนุญาตให้ย้ายองค์ประกอบออกจากไฟล์ std::initializer_list<T> ? #include <initializer_list> #include <utility> template<typename T> void foo(std::initializer_list<T> list) { for (auto it = list.begin(); it != list.end(); ++it) { bar(std::move(*it)); // kosher? } } เนื่องจากstd::intializer_list<T>ต้องการความสนใจของคอมไพเลอร์เป็นพิเศษและไม่มีค่าความหมายเหมือนคอนเทนเนอร์ปกติของไลบรารีมาตรฐาน C ++ ฉันควรจะปลอดภัยดีกว่าขอโทษและถาม

24
ฉันสามารถตั้งค่าเทมเพลต HTML / อีเมลด้วย ASP.NET ได้หรือไม่
ฉันกำลังทำงานกับไซต์ที่จะส่งอีเมลจำนวนมาก ฉันต้องการตั้งค่าทั้งข้อความส่วนหัวและส่วนท้ายหรือแม้กระทั่งแม่แบบเพื่อให้ผู้ใช้แก้ไขอีเมลเหล่านี้ได้อย่างง่ายดายหากต้องการ หากฉันฝัง HTML ไว้ในตัวอักษรสตริง C # มันน่าเกลียดและพวกเขาจะต้องกังวลเกี่ยวกับการหลบหนี การรวมไฟล์แบบแบนสำหรับส่วนหัวและส่วนท้ายอาจใช้งานได้ แต่มีบางอย่างที่ไม่ถูกต้อง อะไรจะเหมาะที่สุดในการใช้.ASPXเพจเป็นเทมเพลตจากนั้นเพียงแค่บอกโค้ดของฉันให้แสดงหน้านั้นและใช้ HTML ที่ส่งกลับมาสำหรับอีเมล มีวิธีที่ดีและง่ายในการทำเช่นนี้หรือไม่? มีวิธีที่ดีกว่าในการแก้ปัญหานี้หรือไม่? อัปเดต: ฉันได้เพิ่มคำตอบที่ช่วยให้คุณสามารถใช้เพจ. aspx มาตรฐานเป็นเทมเพลตอีเมลได้ เพียงแค่แทนที่ตัวแปรทั้งหมดเช่นที่คุณทำตามปกติใช้ databinding เป็นต้นจากนั้นก็จับผลลัพธ์ของหน้าและ voila! คุณมีอีเมล HTML ของคุณ! อัปเดตด้วย CAVEAT !!!: ฉันใช้คลาส MailDefinition บนเพจ aspx บางเพจได้ดี แต่เมื่อพยายามใช้คลาสนี้ระหว่างกระบวนการเซิร์ฟเวอร์ที่กำลังทำงานอยู่มันล้มเหลว ฉันเชื่อว่าเป็นเพราะเมธอด MailDefinition.CreateMailMessage () ต้องการการควบคุมที่ถูกต้องในการอ้างอิงแม้ว่าจะไม่ได้ทำอะไรบางอย่างเสมอไป ด้วยเหตุนี้ฉันจึงขอแนะนำแนวทางของฉันโดยใช้เพจ aspx หรือแนวทางของ Mun โดยใช้เพจ ascx ซึ่งดูเหมือนจะดีกว่าเล็กน้อย
97 c#  asp.net  email  templates 

4
จะตรวจสอบประเภทของพารามิเตอร์เทมเพลตได้อย่างไร?
สมมติว่าฉันมีฟังก์ชันเทมเพลตและสองคลาส class animal { } class person { } template<class T> void foo() { if (T is animal) { kill(); } } ฉันจะตรวจสอบ T คือสัตว์ได้อย่างไร? ฉันไม่ต้องการให้มีบางอย่างที่ตรวจสอบระหว่างเวลาทำงาน ขอบคุณ
97 c++  templates 

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

30
คุณใช้เทมเพลตสด ReSharper 4+ อะไรสำหรับ C # [ปิด]
ตามที่กล่าวมาในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา คุณใช้เทมเพลต ReSharper 4.0 อะไรสำหรับC # มาแบ่งปันกันในรูปแบบต่อไปนี้: [หัวข้อ] คำอธิบายเพิ่มเติม ทางลัด:ทางลัด มีให้ใน: [AvailabilitySetting] // Resharper template code snippet // comes here คุณสมบัติมาโคร (ถ้ามี): Macro1 - ค่า - EditableOccurence Macro2 - ค่า - EditableOccurence โปรดหนึ่งมาโครต่อคำตอบ! ต่อไปนี้เป็นตัวอย่างบางส่วนสำหรับอุปกรณ์ทดสอบ NUnitและกรณีทดสอบ NUnit แบบสแตนด์อโลนที่อธิบายเทมเพลตสดในรูปแบบที่แนะนำ

6
เรียกใช้คำสั่งในงาน Grunt
ฉันใช้Grunt (เครื่องมือสร้างบรรทัดคำสั่งตามงานสำหรับโปรเจ็กต์ JavaScript) ในโปรเจ็กต์ของฉัน ฉันได้สร้างแท็กที่กำหนดเองแล้วและฉันสงสัยว่าจะสามารถเรียกใช้คำสั่งได้หรือไม่ เพื่อความชัดเจนฉันกำลังพยายามใช้ Closure Templates และ "the task" ควรเรียกไฟล์ jar เพื่อคอมไพล์ไฟล์ Soy ไว้ล่วงหน้าเป็นไฟล์ javascript ฉันเรียกใช้ jar นี้จากบรรทัดคำสั่ง แต่ฉันต้องการตั้งค่าเป็นงาน

4
พารามิเตอร์เทมเพลตที่ไม่ใช่ประเภท
ฉันเข้าใจว่าพารามิเตอร์เทมเพลตที่ไม่ใช่ประเภทควรเป็นนิพจน์อินทิกรัลคงที่ มีใครช่วยส่องทำไมถึงเป็นอย่างนั้น? template <std::string temp> void foo() { // ... } error C2993: 'std::string' : illegal type for non-type template parameter 'temp'. ฉันเข้าใจว่านิพจน์ปริพันธ์คงที่คืออะไร อะไรคือสาเหตุที่ไม่อนุญาตประเภทที่ไม่คงที่เช่นstd::stringในตัวอย่างข้างต้น
93 c++  templates 

2
“ การใช้ ODR” หมายความว่าอย่างไร
เพียงแค่นี้ก็ขึ้นมาในบริบทของคำถามอื่น เห็นได้ชัดว่าฟังก์ชันสมาชิกในเทมเพลตคลาสจะถูกสร้างอินสแตนซ์เฉพาะเมื่อใช้ ODR ใครช่วยอธิบายได้ว่าหมายถึงอะไร บทความวิกิพีเดียหนึ่งนิยามกฎ (ODR)ไม่ได้พูดถึง " ODR การใช้งาน " อย่างไรก็ตามมาตรฐานกำหนดให้เป็น ตัวแปรที่มีชื่อปรากฏเป็นนิพจน์ที่มีการประเมินค่าจะถูกใช้แบบแปลกเว้นแต่ว่าจะเป็นอ็อบเจ็กต์ที่ตรงตามข้อกำหนดสำหรับการปรากฏในนิพจน์คงที่ (5.19) และการแปลงค่า lvalue-to-rvalue (4.1) จะถูกนำไปใช้ทันที ใน [basic.def.odr] แก้ไข: เห็นได้ชัดว่านี่เป็นส่วนที่ไม่ถูกต้องและทั้งย่อหน้ามีคำจำกัดความหลายคำสำหรับสิ่งต่างๆ นี่อาจเป็นสิ่งที่เกี่ยวข้องสำหรับฟังก์ชันสมาชิกเทมเพลตคลาส: ฟังก์ชันที่ไม่โอเวอร์โหลดซึ่งมีชื่อปรากฏเป็นนิพจน์ที่มีการประเมินผลหรือเป็นสมาชิกของชุดฟังก์ชันผู้สมัครหากเลือกโดยความละเอียดเกินพิกัดเมื่ออ้างถึงจากนิพจน์ที่มีการประเมินอาจจะใช้ไม่ได้เว้นแต่จะเป็นเสมือนจริงทั้งหมด ฟังก์ชันและชื่อของฟังก์ชันไม่ตรงตามคุณสมบัติอย่างชัดเจน อย่างไรก็ตามฉันไม่เข้าใจว่ากฎนี้ทำงานอย่างไรกับหน่วยคอมไพล์หลาย ๆ หน่วย? ฟังก์ชันของสมาชิกทั้งหมดถูกสร้างอินสแตนซ์หรือไม่หากฉันสร้างอินสแตนซ์เทมเพลตคลาสอย่างชัดเจน

6
ความเชี่ยวชาญเทมเพลตของวิธีการเดียวจากคลาสเทมเพลต
พิจารณาเสมอว่าส่วนหัวต่อไปนี้ซึ่งมีคลาสเทมเพลตของฉันรวมอยู่ใน.CPPไฟล์อย่างน้อยสองไฟล์โค้ดนี้คอมไพล์อย่างถูกต้อง: template <class T> class TClass { public: void doSomething(std::vector<T> * v); }; template <class T> void TClass<T>::doSomething(std::vector<T> * v) { // Do something with a vector of a generic T } template <> inline void TClass<int>::doSomething(std::vector<int> * v) { // Do something with a vector of int's } แต่สังเกตอินไลน์ในวิธีการเฉพาะ …

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