讓我們考慮的定義:C++獲取類成員的默認值,而無需創建新的對象
struct ClassWithMember
{
int myIntMember = 10;
}
我想得到myIntMember
的默認值,但不創建另一個類的實例
// IMPOSSIBLE int myInt = ClassWithMember::myIntMember;
// MUST AVOID int myInt = ClassWithMember().myIntMember;
我知道解決辦法,但不喜歡:
struct ClassWithMember
{
static const int myIntMember_DEFAULT = 10;
int myIntMember = myIntMember_DEFAULT;
}
int myInt = ClassWithMember::myIntMember_DEFAULT;
因爲它需要額外的線。而且我無法定義像static const int *const INTEGER11_DEFAULT = 0x100088855;
這樣的內聯靜態指針,這樣的指針必須在.cpp
文件中定義,在.hpp
中只是聲明。我的許多課程只有標題,因此爲此值創建多餘的.cpp
不是個好主意。
Here是C#
「我知道解決方法,但不喜歡它」....可能是你應該解釋爲什麼? – HazemGomaa
因爲它需要多一行。我不能像'static const int * const INTEGER11 = 11;'那樣定義內聯靜態指針,指針必須在'.cpp'文件中定義,僅在'.hpp'聲明中定義。 – kyb
「static const int * const INTEGER11 = 11」不是有效語句,這與上面提到的所有關於可訪問性的問題都不相同......請編輯您的問題以符合您的真正需求。 – HazemGomaa