Avatar ·

كيفية تهيئة الأعضاء الثابتة الخاصة في ملف الرأس؟

مرحبًا! بدأت في تعلم C++ وواجهت مشكلة عند العمل مع الأعضاء الثابتة في الفئة. لدي فئة بسيطة تخزن عدد الكائنات التي تم إنشاؤها: ```cpp // MyClass.h class MyClass { private: static int counter; // تعريف العضو الثابت public: MyClass() { ++counter; } int getCounter() const { return counter; } }; ``` أحاول تهيئة `counter` مباشرة في ملف الرأس، على سبيل المثال: ```cpp static int counter = 0; // خطأ! ``` لكن المترجم يعطي خطأ: "non-const static data member must be initialized out of line". إذا جعلت العضو عامًا وقمت بتهيئته في ملف .cpp، يعمل كل شيء: ```cpp // MyClass.cpp #include "MyClass.h" int MyClass::counter = 0; ``` لكن ليس من المناسب لي إنشاء ملف .cpp منفصل في كل مرة لمثل هذه الأمور البسيطة. سمعت أنه في C++17 ظهرت بعض الإمكانيات الجديدة. كيف يمكن تهيئة الأعضاء الثابتة الخاصة بشكل صحيح في ملف header بحيث يكون الكود مضغوطًا؟