gpt4 book ai didi

c++ - 返回 NULL 指针,从 'long int' 到 'Object*' 的无效转换

转载 作者:行者123 更新时间:2023-11-28 02:02:48 25 4
gpt4 key购买 nike

我的问题似乎有点类似于 Conversion from null-integer to pointer in comma list

这是一个简单的例子

#include <utility>

struct Object {
double foo;
};

std::pair<Object*,int> test_function() {
typedef std::pair<Object*,int> pair_t;
return pair_t(NULL, 2);
}
// test.cc

对于 gcc 4.4.7,g++ -std=c++0x -c test.cc -o test.o 失败

/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_pair.h:90: error: invalid conversion from \u2018long int\u2019 to \u2018Object*

如果我省略 -std=c++0x,它会编译。另外,如果我使用较新版本的 gcc,则编译没问题。代码有什么问题吗?人们应该期望 gcc 版本有这样的差异吗?

后来的编辑:我也可以返回 pair_t((Object*)NULL, 2)

最佳答案

我相信您的问题的答案就在这里:

C++ can't initialize a pointer in a pair to NULL

NULL 由 gcc 表示为 long,如果没有显式转换,它不能转换为 Object* 类型。

关于c++ - 返回 NULL 指针,从 'long int' 到 'Object*' 的无效转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38748394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com