كيفية تهيئة الأعضاء الثابتة الخاصة في ملف الرأس؟
مرحبًا! بدأت في تعلم 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 بحيث يكون الكود مضغوطًا؟