在默认构造函数中使用NULL

问题描述 投票:0回答:3

在我的C ++类(头文件)中,我正在使用此:

int pWholesalerId;

现在,我已经创建了一个默认的构造函数。可以将此属性的值设置为null吗?

Game::Game()
{
    gId = 0;
    pWholesalerId = Null;
}

当前,即使我已经在使用identifier "Null" is undefined,我也会得到#include <stddef.h>

c++ oop null default-constructor
3个回答
2
投票

编号

没有将int设置为null的事情。 int是数字。它们不是“可为空”。

您可以考虑像std::unique_ptr<int>这样的动态分配(尽管对于int来说这很繁重)或std::optional<int>

或者,只需跟踪int的值是否“有意义”即可(例如,使用布尔值或检查类状态的其他方面)。根据您的要求,将其设置为0可能会或可能不会实现此目标。


1
投票

在C标头<stddef.h>或C ++标头<cstddef>中没有宏Null。定义了宏NULL。但是它用于通过空指针常量初始化指针。

在构造函数中,您应该只写

pWholesalerId = 0;

0
投票

简单地写

int pWholesalerId = 0;

在头文件中,对于gId使用类似的语句,然后完全删除默认构造函数。

Null未由标准C ++定义。 NULL是,但是其含义在C和C ++中有所不同,最好避免使用。用0分配给int,用nullptr分配指针类型。

© www.soinside.com 2019 - 2024. All rights reserved.