在默认构造函数中使用 NULL
Use NULL in default constructor
在我的 C++ class(头文件)中,我使用的是:
int pWholesalerId;
现在,我已经创建了一个默认构造函数。是否可以将此属性的值设置为空?
Game::Game()
{
gId = 0;
pWholesalerId = Null;
}
目前,我得到 identifier "Null" is undefined
,即使我已经在使用 #include <stddef.h>
在 C 头文件 <stddef.h>
或 C++ 头文件 <cstddef>
中没有宏 Null。定义了宏NULL
。但是它被用来通过一个空指针常量来初始化一个指针。
在你的构造函数中你应该只写
pWholesalerId = 0;
没有
没有将 int
设置为空这样的事情。 int
s 是数字。他们不是 "nullable".
您可以考虑像 std::unique_ptr<int>
这样的动态分配(尽管这对于 int
来说非常繁重)或 std::optional<int>
.
或者,您自己跟踪 int
的值是否为 "meaningful"(例如使用布尔值,或检查 class 的其他方面)的状态)。将其设置为 0
可能会或可能不会实现此目标,具体取决于您的要求。
写得简单
int pWholesalerId = 0;
在头文件中,使用与gId
类似的语句,然后完全删除默认构造函数。
Null
不是由标准 C++ 定义的。 NULL
是,但它的含义在 C 和 C++ 中有所不同,最好避免使用。使用 0
分配给 int
,使用 nullptr
分配给指针类型。
在我的 C++ class(头文件)中,我使用的是:
int pWholesalerId;
现在,我已经创建了一个默认构造函数。是否可以将此属性的值设置为空?
Game::Game()
{
gId = 0;
pWholesalerId = Null;
}
目前,我得到 identifier "Null" is undefined
,即使我已经在使用 #include <stddef.h>
在 C 头文件 <stddef.h>
或 C++ 头文件 <cstddef>
中没有宏 Null。定义了宏NULL
。但是它被用来通过一个空指针常量来初始化一个指针。
在你的构造函数中你应该只写
pWholesalerId = 0;
没有
没有将 int
设置为空这样的事情。 int
s 是数字。他们不是 "nullable".
您可以考虑像 std::unique_ptr<int>
这样的动态分配(尽管这对于 int
来说非常繁重)或 std::optional<int>
.
或者,您自己跟踪 int
的值是否为 "meaningful"(例如使用布尔值,或检查 class 的其他方面)的状态)。将其设置为 0
可能会或可能不会实现此目标,具体取决于您的要求。
写得简单
int pWholesalerId = 0;
在头文件中,使用与gId
类似的语句,然后完全删除默认构造函数。
Null
不是由标准 C++ 定义的。 NULL
是,但它的含义在 C 和 C++ 中有所不同,最好避免使用。使用 0
分配给 int
,使用 nullptr
分配给指针类型。