让我们考虑的定义: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