我试图保持各种void*
存储,并希望其中一些是nullptr
,如果没有初始化。问题是,我现在需要,如果他们是nullptr
或没有。
我做了下一个程序:
#incldue <iostream>
int main() {
void * a = nullptr;
if (a == nullptr) {
std::cout << "Yes" << std::endl;
} else {
std::cout << "No" << std::endl;
}
}
字符串
这里会打印出“Yes”,这意味着我可以判断出void*
是否是nullptr
,但我不确定这是一种好方法,还是更好地使用,例如,可选。我做的事情有什么不对吗,或者有什么东西会导致这样做的错误吗?
1条答案
按热度按时间qrjkbowd1#
如果您要确定
void*
是否已初始化,请使用optional<void*>
。问题是,当将nullptr
转换为void*
时,您会丢失它是从nullptr
初始化的信息,而不是其他类型的“null”指针。也就是说,我同意通常有比
void*
更好的方法来实现类型擦除的评论。