คำถามติดแท็ก static-members

17
วิธีการเริ่มต้นสมาชิกคงที่ส่วนตัวใน C ++?
วิธีที่ดีที่สุดในการเริ่มต้นสมาชิกข้อมูลส่วนตัวแบบคงที่ใน C ++ คืออะไร? ฉันลองสิ่งนี้ในไฟล์ส่วนหัวของฉัน แต่มันทำให้ฉันมีข้อผิดพลาด linker: class foo { private: static int i; }; int foo::i = 0; ฉันเดาว่าเป็นเพราะฉันไม่สามารถเริ่มสมาชิกส่วนตัวจากนอกห้องเรียนได้ ดังนั้นวิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?


6
การอ้างอิงที่ไม่ได้กำหนดถึง constexpr แบบคงที่ []
ฉันต้องการstatic const charอาร์เรย์ในชั้นเรียนของฉัน GCC บ่นและบอกว่าฉันควรใช้constexprถึงแม้ว่าตอนนี้มันจะบอกฉันว่ามันเป็นข้อมูลอ้างอิงที่ไม่ได้กำหนด ถ้าฉันทำให้อาร์เรย์ไม่ใช่สมาชิกแล้วมันจะรวบรวม เกิดอะไรขึ้น? // .hpp struct foo { void bar(); static constexpr char baz[] = "quz"; }; // .cpp void foo::bar() { std::string str(baz); // undefined reference to baz }


1
ฟังก์ชั่นสมาชิกคงที่ข้อผิดพลาด; วิธีการเขียนลายเซ็นอย่างถูกต้อง?
ฉันได้รับข้อผิดพลาดเมื่อพยายามรวบรวมรหัสของฉันใน g ++ โดยใช้ลายเซ็นปัจจุบัน: cannot declare member function static void Foo::Bar(std::ostream&, const Foo::Node*) to have static linkage คำถามของฉันคือสองเท่า: ทำไมมันไม่คอมไพล์ด้วยวิธีนี้? ลายเซ็นที่ถูกต้องคืออะไรและเพราะเหตุใด ลายเซ็นเป็นความตายของฉันเมื่อใช้ C ++ แก้ไข: นี่คือไฟล์ส่วนหัวของชั้นเรียนเช่นกัน: class Foo { public: Foo(); ~Foo(); bool insert(const Foo2 &v); Foo * find(const Foo2 &v); const Foo * find(const Foo2 &v) const; void output(ostream &s) …

7
ข้อความแสดงข้อผิดพลาดมาตรฐานที่เข้มงวด: ไม่ควรเรียกเมธอดแบบคงที่ใน php
ฉันมี php ต่อไปนี้ อย่างไรก็ตามเมื่อฉันเห็น index.php ฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้ มาตรฐานที่เข้มงวด: วิธีการแบบไม่คงที่ Page :: getInstanceByName () ไม่ควรเรียกแบบคงที่ใน /var/www/webworks/index.php ในบรรทัดที่ 12 ฉันหวังว่าจะมีคนบอกวิธีแก้ไขปัญหาได้ index.php // { common variables and functions include_once('ww.incs/common.php'); $page=isset($_REQUEST['page'])?$_REQUEST['page']:''; $id=isset($_REQUEST['id'])?(int)$_REQUEST['id']:0; ... // { get current page id if(!$id){ if($page){ // load by name $r=Page::getInstanceByName($page); if($r && isset($r->id))$id=$r->id; } if(!$id){ // else load by …

4
วงจรชีวิตของวัตถุคงที่ของ Android
ฉันกำลังสร้างแอปพลิเคชันการค้นหาเหตุการณ์เราตั้งเกณฑ์การค้นหาจากหน้าจอหนึ่งเติมในหน้าจออื่นจากนั้นผู้ใช้สามารถแก้ไขเกณฑ์การค้นหาจากหน้าจอที่ 3 และไปที่หน้าจอที่ 4 เพื่อให้บรรลุภารกิจข้างต้นฉันใช้วัตถุคงที่ซึ่งจำค่ารอบ ๆ แอปพลิเคชันและฉันไม่จำเป็นต้องทำอะไรเพิ่มเติม แต่ฉันกลัวถ้าเกี่ยวกับวงจรชีวิตของวัตถุคงที่ใน Android หากหน่วยความจำต่ำพบว่า android ลบวัตถุคงที่ ??? เนื่องจาก Android รองรับการทำงานแบบมัลติทาสกิ้งหากผู้ใช้เปลี่ยนไปใช้แอปพลิเคชันอื่นและเมื่อผู้ใช้กลับมาแอปพลิเคชันเริ่มทำงานบ้าวัตถุคงที่จะถูกลบออกเมื่อทำงานหลายอย่างหรือไม่? คิดยังไง ?? และยังแนะนำให้ถือวัตถุคงที่ด้วยวิธี singleton เป็นแนวทางที่ดีกว่า ???

6
วิธีใดเป็นวิธีที่ดีที่สุดในการกำหนดค่าคงที่ใน Android ทั้งคลาสแบบคงที่ส่วนต่อประสานหรือทรัพยากร xml
ฉันกำลังพัฒนาแอปพลิเคชัน Android ที่ใช้บริการเว็บเพื่อรับข้อมูลจากเซิร์ฟเวอร์เนื่องจากฉันมี URL สามชุดที่แตกต่างกันเพื่อชี้ระบบการพัฒนาเซิร์ฟเวอร์ทดสอบและเซิร์ฟเวอร์ที่ใช้งานจริง การเปลี่ยน URL เป็นเรื่องยากเมื่อใดก็ตามที่ฉันต้องการให้แอปพลิเคชันทดสอบ / ใช้งานจริง ดังนั้นฉันจึงวางแผนที่จะทำให้มันสามารถกำหนดค่าได้เพื่อให้แอปพลิเคชันได้รับ URL ที่เหมาะสมตามค่าคงที่การกำหนดค่าประเภทการสร้างของฉัน ดังนั้น, วิธีใดเป็นวิธีที่ดีที่สุดในการเก็บค่าคงที่คลาส java static หรือ java public interface หรือไฟล์ทรัพยากร xml เมื่อไหร่? ทำไม? ซึ่งให้ประสิทธิภาพที่ดีกว่า? เมื่อไร? ทำไม? เช่นทรัพยากร xml <integer name="config_build_type">0</integer> <string-array name="url_authentication"> <item >http://development.com/xxxx</item> <item >http://test.com/xxx</item> <item >http://example.com/xxx</item> </string-array> ค่าคงที่คงที่ของ Java public class Config { public static final …

6
ช่องคงเปิดสำหรับการรวบรวมขยะหรือไม่
ให้คลาสยูทิลิตี้สมมุติที่ใช้ในการตั้งค่าโปรแกรมเท่านั้น: class MyUtils { private static MyObject myObject = new MyObject(); /*package*/static boolean doStuff(Params... params) { // do stuff with myObject and params... } } myObject จะถูกเก็บรวบรวมเมื่อไม่มีการใช้งานอีกต่อไปหรือไม่หรือจะคงอยู่ตลอดชีวิตของโปรแกรม?

10
เหตุใด Java จึงห้ามไม่ให้มีฟิลด์แบบคงที่ในคลาสภายใน
class OuterClass { class InnerClass { static int i = 100; // compile error static void f() { } // compile error } } แม้ว่าจะไม่สามารถเข้าถึงฟิลด์แบบคงที่ได้OuterClass.InnerClass.iแต่ถ้าฉันต้องการบันทึกสิ่งที่ควรเป็นแบบคงที่เช่นจำนวนของออบเจ็กต์ InnerClass ที่สร้างขึ้นการทำให้ฟิลด์นั้นคงที่จะเป็นประโยชน์ ดังนั้นทำไมไม่ห้าม Java เขตข้อมูลคงที่ / วิธีการในการเรียนภายใน? แก้ไข: ฉันรู้วิธีทำให้คอมไพเลอร์พอใจกับคลาสซ้อนแบบคงที่ (หรือคลาสภายในแบบคงที่) แต่สิ่งที่ฉันอยากรู้คือทำไม java จึงห้ามฟิลด์ / วิธีการแบบคงที่ภายในคลาสภายใน (หรือคลาสภายในธรรมดา) จากทั้งการออกแบบภาษาและ ด้านการนำไปใช้งานหากมีใครรู้เพิ่มเติมเกี่ยวกับเรื่องนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.